方法
顺序队列和循环队列的比较
定义节点
#define MAXsize 100;
typedef int DATAType;
typedef struct {
DATAType _data[MAXsize];
int front;
int tail;
}queue;
void Initqueue(queue *queue){/*初始化*/
assert(queue);
queue->front=queue->tail=NULL;
}
void queueIN(queue *queue,DATAtype e){/*入队*/
if((queue->tail+1)%MAXsize==queue->front){
printf("已经满");
return;
}
queue->data[queue->tail%MAXsize]=e;
queue->tail++;
}
void queueout(queue *queue){
/*出队*/
if(queue->front==queue->tail){
return;
}
queue->front=(queue->front+1)%MAXsize;
}
链式队列
typedef int datatype;
typedef struct node{
datatype _elm;
struct node* next;
}
typedef struct queue{
queue* front;
queue* tail;
}queue;
void Init(queue *queue){
q->_tail = q->_front = NULL;
}
void queuein(queue *queue,datatype e){
if(NULL==queue->front){
queue->front=(node*)malloc(sizeof(node));
queue->front->_elm=e;
queue->front=queue->tail;
}
else{
queue->tail->next=(node*)malloc(sizeof(node));
queue->tail->next->_elm=e;
queue->tail=queue->tail->next;
}
}
void queueout(queue *queue){
if(NULL==queue->front){
return;
}
node* tmp=queue->front;
queue->front=queue->front_next;
free(tmp);
}