#include<stdio.h> #include<stdlib.h> typedef int QElemType; typedef struct QNode{ QElemType data; struct QNode *next ; }QNode,*QueuePtr; typedef struct{ QueuePtr front; QueuePtr rear; }LinkQueue; int InitQueue(LinkQueue &Q){ Q.front = Q.rear = (QueuePtr)malloc(sizeof(QNode)); if(!Q.front) exit(-2); Q.front->next = NULL; return 1; } int EnQueue(LinkQueue &Q,QElemType e){ QueuePtr p = (QueuePtr)malloc(sizeof(QNode)); if(!p) exit(-2); p->data = e;p->next = NULL; Q.rear->next = p; Q.rear = p; return 1; } int DeQueue(LinkQueue &Q,QElemType &e){ if(Q.front == Q.rear) return -1; QueuePtr p = Q.front->next; e = p->data; Q.front->next = p->next; if(Q.rear == p) Q.rear = Q.front; free(p); printf("%d Out\n",e); return 1; } int DestoryQueue(LinkQueue &Q){ while(Q.front){ Q.rear = Q.front->next; free(Q.front); Q.front = Q.rear; } return 1; } void ShowQueue(LinkQueue &Q) { printf("-----ShowQueue Start-----\n"); QueuePtr pf = Q.front; QueuePtr pr = Q.rear; while(pf!=pr){ pf = pf->next ; printf("%d\n",pf->data); } printf("-----ShowQueue Done-----\n"); } int main(){ LinkQueue q1; InitQueue(q1); EnQueue(q1,1);EnQueue(q1,2);EnQueue(q1,3);EnQueue(q1,4);EnQueue(q1,5); ShowQueue(q1); QElemType e; DeQueue(q1,e);DeQueue(q1,e); ShowQueue(q1); return 0; }
虽然书中把队列和栈放在了同一章,不过理解起队列还是要比栈难一点。不过熟悉过后都不难,多练习
时间: 2024-10-14 01:30:47