队列的基本操作(c语言版)
#include<stdio.h>#include<stdlib.h>typedef int elemType;struct QueuePtr{ elemType data;
#include<stdio.h> #include<stdlib.h> typedefintelemType; structQueuePtr{ elemTypedata; structQueuePtr*next; }; structLinkQueue{ structQueuePtr*front; structQueuePtr*rear; }; voidinitQueue(structLinkQueue*Q) /*q*/ 第一个操作构造一个空队列 { Q->front=Q->rear=NULL; /**/ 把队首和队尾指针置空 return; } voidpush(structLinkQueue*Q,elemTypex) /*eq*/ 第二个操作插入元素为的新的队尾元素 { /*newP*/ 得到一个由指针所指向的新结点 structQueuePtr*newP; newP=(structQueuePtr*)malloc(sizeof(structQueuePtr)); if(newP==NULL){ printf(""); 内存空间分配失败! exit(1); } /*x*/ 把的值赋给新结点的值域,把新结点的指针域置空 newP->data=x; newP->next=NULL; /**/ 若链队为空,则新结点即是队首结点又是队尾结点 if(Q->rear==NULL){ Q->front=Q->rear=newP; } else{ /**/ 若链队非空,则依次修改队尾结点的指针域和队尾指针,使之指向新的队尾结点 Q->rear=Q->rear->next=newP;

