链队的关键还是先进先出,后加入的数据应该在队尾。
![](https://i-blog.csdnimg.cn/blog_migrate/d417cf422cc67a1f93caca998a2d0c09.png)
#include <iostream>
#include <stdlib.h>
using namespace std;
typedef struct QNode{
int data;
QNode *next;
}QNode,*QueuePtr;
typedef struct{
QueuePtr front;
QueuePtr rear;
}LinkQueue;
void InitQueue(LinkQueue &Q){
Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode));
if(!Q.front){
exit(-1);
}else{
Q.front->next=NULL;
}
}
bool EmQueue(LinkQueue &Q,int val){
QueuePtr p=(QueuePtr)malloc(sizeof(QNode));
if(!p){
exit(-1);
}
p->data=val;
p->next=NULL;
Q.rear->next=p;
Q.rear=p;
return true;
}
int DeQueue(LinkQueue &Q){
if(!Q.front->next){
cout<<"对内无元素!"<<endl;
exit(-2);
}else{
QueuePtr q=Q.front->next;
int e=q->data;
Q.front->next=q->next;
free(q);
return e;
}
}
int main(){
LinkQueue Q;
InitQueue(Q);
EmQueue(Q,3);
EmQueue(Q,2);
EmQueue(Q,1);
EmQueue(Q,0);
cout<<DeQueue(Q)<<endl;
cout<<DeQueue(Q)<<endl;
cout<<DeQueue(Q)<<endl;
cout<<DeQueue(Q)<<endl;
cout<<DeQueue(Q)<<endl;
cout<<DeQueue(Q)<<endl;
return 0;
}