链队列的实质就是只限制在表头做添加,表尾做删除的单链表
一 链队列示意图

注:增加指向链表的队尾指针,便于在表尾做插入操作;其中Q为LinkQueue型的指针。
二 链队列基本运算
-
- void InitQueue(LinkQueue *Q)
- {
- Q->front=Q->rear=NULL;
- }
-
- intQueueEmpty(LinkQueue *Q)
- {
- return Q->front==NULL&&Q->rear==Null;
-
- }
-
- void EnQueue(LinkQueue *Q,DataType x)
- {
- QueueNode *p = (QueueNode *)malloc(sizeof(QueueNode));
- p->data = x;
- p->next = NULL;
- if(QueueEmpty(Q))
- Q->front = Q->rear = p;
- else
- {
-
- Q->rear->next = p;
- Q->rear = p;
- }
- }
-
- DataType DeQueue(LinkQueue *Q)
- {
- DataType x;
- QueueNode *p;
- if(QueueEmpty(Q))
- Error("Queue undefflow");
- p = Q->front;
- x = p->data;
- Q->front = p->next;
- if(Q->rear=p)
- Q->rear = NULL;
- free(p);
- return x;
-
- }
转载:http://blog.csdn.net/xsf50717/article/details/39938553