小乐今天给分享c++ queue用法的知识,其中也会对cqueue用法进行解释,希望能解决你的问题,请看下面的文章阅读吧!

c++ queue用法 cqueue用法c++ queue用法 cqueue用法


c++ queue用法 cqueue用法


1、输出数据元素:1 2 3 4 5链队列的实现/}}while(ans=='y' || ans =='y');#include using namespace std;/链队列类型定义/typedef struct QNode{struct QNode next;char data;}QNode,queuePtr;//结点的定义typedef struct linkQueue{queuePtr rear;queuePtr front;}linkQueue;//队列的定义/链队列的初始化/void initQueue_L(linkQueue &Q){Q.front=Q.rear=new QNode;//为队列申请一个空间Q.front->next=0;//使队列的头指针指向空}/销毁链队列/void destroyQueue_L(linkQueue &Q){while(Q.front){queuePtr p;p=Q.front;delete p;//销毁链队列得把结点一个一个销毁掉/入队/void enterQueue_L(linkQueue &Q,char x){QNode p;p=new QNode;p->data=x;p->next=0;Q.rear->next=p;/这里和顺序队列不一样,此处的rear不是指向队列一个元素的下一个位置,而就是指向队列的一个元素。

2、要知道Q.rear和Q.front都是指针。

3、/Q.rear=p;}//这里没有队满的情况。

4、/出队/char outputQueue_L(linkQueue &Q){char x;if(Q.front->next==0)//这里得考虑队列空的情况。

5、coutQNode p;p=Q.front->next;/应该注意顺序队列和链队列的不同之处,链队列中rear指向一个元素,front指向头结点,即个结点的前一个结点。

6、而在顺序队列中正好相反,rear指向队列中的一个元素的下一个位置,而front就是指向个结点。

7、/x=p->data;Q.front->next=p->next;if(Q.rear==p)Q.rear=Q.front;delete p;return x;}char GetQueneHead(linkQueue Q){linkQueue Q;initQueue_L(Q);enterQueue_L(Q,'a');enterQueue_L(Q,'b');enterQueue_L(Q,'c');enterQueue_L(Q,'d');coutcoutcoutcout//coutdestroyQueue_L(Q);。

本文到这结束,希望上面文章对大家有所帮助。