链队列的算法操作
學習地址:http://blog.csdn.net/stpeace/article/details/8131634
#include<iostream>using namespace std;typedef struct QNode
{int data;struct QNode *next;
}QNode;typedef struct
{QNode *front;QNode *rear;
}LQode,*PQueue; //鏈式隊列類型定義void initQueue(LQueue *&lqu)
{lqu=new LQueue;lqu->front=lqu->rear=NULL;//當隊列中油一個元素時,front和rear指針都指向這個元素,沒有元素時則都指向NULL
}int QueueEmpty(LQueue *lqu)
{if(lqu->rear==NULL||lqu->front==NULL)return 1;elsereturn 0;return 2;
}void enQueue(LQueue *lqu,int x)
{QNode *p;//節點指針p=new QNode;p->data=x;p->next=NULL;if(lqu->rear==NULL){lqu->front=lqu->rear=p;//是空,則他們都指向新建的節點}else{lqu->rear->next=p;//先連接帶隊尾lqu->rear=p;}
}int deQueue(LQueue *lqu,int &x)
{QNode *p;if(lqu->rear==NULL){return 0;}else{p=lqu->front;}if(lqu->front==lqu->rear){lqu->front=lqu->rear=NULL;}else{lqu->front=lqu->front->next;//后移}x=p->data;delete p;return 1;
}int main()
{PQueue PQueue1;initQueue(PQueue1);QueueEmpty(PQueue1);int a=3;enQueue(PQueue1,a);int b=0;deQueue(PQueue1,b);QueueEmpty(PQueue1);return 0;}
總結
- 上一篇: 顺序队列的算法操作
- 下一篇: 字符串复制中的while条件