突然钓鱼岛C++建一队列(链式存储结构)实现队列中元素的出队列,新元素入队列及取队头元素第1个回答:风暴头脑2016-03-15TA获得超过260个

第1个回答:

风暴头脑2016-03-15TA获得超过260个赞关注*链队列的实现*/#include<iostream>usingnamespacestd;/*链队列类型定义*/typedefstructQNode{structQNode*next;chardata;}QNode,*queuePtr;//结点的定义typedefstructlinkQueue{queuePtrrear;queuePtrfront;}linkQueue;//队列的定义/*链队列的初始化*/voidinitQueue_L(linkQueue&Q){Q.front=Q.rear=newQNode;//为队列申请一个空间Q.front->next=0;//使队列的头指针指向空}/*销毁链队列*/voiddestroyQueue_L(linkQueue&Q){while(Q.front){queuePtrp;p=Q.front;Q.front=Q.front->next;deletep;//销毁链队列得把结点一个一个销毁掉}}/*入队*/voidenterQueue_L(linkQueue&Q,charx){QNode*p;p=newQNode;p->data=x;p->next=0;Q.rear->next=p;/*这里和顺序队列不一样,此处的rear不是指向队列最后一个元素的下一个位置,而就是指向队列的最后一个元素。要知道Q.rear和Q.front都是指针。*/Q.rear=p;}//这里没有队满的情况。/*出队*/charoutputQueue_L(linkQueue&Q){charx;if(Q.front->next==0)//这里得考虑队列空的情况。cout<<"QueueEmpty!"<<endl;QNode*p;p=Q.front->next;/*应该注意顺序队列和链队列的不同之处,链队列中rear指向最后一个元素,front指向头结点,即第一个结点的前一个结点。而在顺序队列中正好相反,rear指向队列中的最后一个元素的下一个位置,而front就是指向第一个结点。*/x=p->data;Q.front->next=p->next;if(Q.rear==p)Q.rear=Q.front;deletep;returnx;}charGetQueneHead(linkQueueQ){returnQ.front->data;}voidmain(){linkQueueQ;initQueue_L(Q);enterQueue_L(Q,'a');enterQueue_L(Q,'b');enterQueue_L(Q,'c');enterQueue_L(Q,'d');cout<<outputQueue_L(Q)<<endl;cout<<outputQueue_L(Q)<<endl;cout<<outputQueue_L(Q)<<endl;cout<<outputQueue_L(Q)<<endl;//cout<<outputQueue_L(Q)<<endl;destroyQueue_L(Q);}