队列
c语言链式实现
typedef struct QueueNode{ //定义节点结构体类型
char date;
struct QueueNode *next;
}QueueNode;
typedef struct QueueList{ //定义队列结构体 头 尾
QueueNode *front;
QueueNode *rear;
}QueueList;
/*
void InitQueueList(QueueList *Q){ //带头节点 队头指向空节点 此初始化方法有问题,求指教
QueueNode *p;
p=(QueueNode *)malloc(sizeof(QueueNode));
Q=(QueueList *)malloc(sizeof(QueueList));
p->next=NULL;
Q->front=Q->rear=p;
}*/
QueueList *InitQueueList(){ //带头节点 队头指向空节点
QueueNode *p;
QueueList *Q;
p=(QueueNode *)malloc(sizeof(QueueNode));
Q=(QueueList *)malloc(sizeof(QueueList));
p->next=NULL;
Q->front=Q->rear=p;
return Q;
}
QueueNode *InitQueueNode(){
QueueNode *p;
p=(QueueNode *)malloc(sizeof(QueueNode));
p->next=NULL;
return p;
}
void EnQueue(QueueList *Q,char date){
QueueNode *q;
q=InitQueueNode();
q->date=date;
q->next=NULL;
Q->rear->next=q;
Q->rear=q;
}
void DeQueue(QueueList *Q,char &date){
QueueNode *q;
q=InitQueueNode();
q=Q->front->next;
date=q->date;
Q->front->next=q->next;
free(q);
if(Q->front->next==NULL) //如果最后一个节点出队,则需将rear指针指向头节点
Q->rear=Q->front;
}
bool IsEmpty(QueueList *Q){
if(Q->front==Q->rear)
return true;
else
return false;
}