1、QueuePtr front;QueuePtr rear;LinkQueue;void InitQueue_L(LinkQueue &Q)/初始化队列Q.front=Q.rear=new LNode;Q.front-next=NULL;int IsEmpty(LinkQueue *Q) if(Q-front=Q-rear) return(TRUE); else return(FALSE);/队列是否为空或为满void queueexist(LinkQueue *Q) coutrear-next!=NULL)该队列为满该队列既不为空也不为满/构造队列,数据元素由键盘输入void CreateQu
2、eue_L(LinkQueue & QElemType temp; LNode *p;输入要插入的队列值(输入-1结束) cintemp; while(temp != -1) p=new LNode; p-data=temp; Q.rear-next=p; Q.rear=p;/入队操作int EnterQueue(LinkQueue *Q,QElemType x)/将数据元素x插入到队列Q中 LNode *NewNode=new LNode;if(NewNode!NewNode-data=x; NewNode- Q-next=NewNode;Q-rear=NewNode;return(TRUE
3、);else return(FALSE); /溢出/出队操作int DeleteQueue(LinkQueue *Q,QElemType *x)/将队列Q的队头元素出队,并存放到x所指的存储空间中 p=Q-front-next;next=p- /队头元素p出队rear=p) /如果队中只有一个元素p,则p出队后成为空队rear=Q-front; *x=p-data; free(p); /释放存储空间/队列长度void QueueLength_L(LinkQueue Q) int length=0; if(IsEmpty(&Q); LNode *p=new LNode; p=Q.front- w
4、hile(p) length+; p=p-该链队列的长度为:length/由头到尾依次输出队列的数据元素void OutputQueue_L(LinkQueue Q) if(Q.front=Q.rear) coutdata delete Q.front; Q.front=Q.rear;void main() int flag=1,select; 链队的基本操作 1.请输入链队列元素: 2.判断链队列是否为空或为满 3.当前队头元素出队并将其输出链队列各元素 4.将x入队并输出链队列各元素 5.当前链队列的长度 6.销毁队列 7.退出while(flag)请选择:select; LinkQueue Q; int x; switch(select) case 1: InitQueue_L(Q); CreateQueue_L(Q); OutputQueue_L(Q); break; case 2: queueexist(&Q); case 3: DeleteQueue(&Q,&x); case 4:输入要入队的元素x:x; EnterQueue(&Q,x); case 5: QueueLength_L(Q); case 6: DestroyQueue_L(Q);销毁成功!可以再重新建立 case 7: flag=0;