参考 王道
#include<iostream>
#include<cstdio>
#include<malloc.h>
using namespace std;
typedef struct LinkNode{
int data;
struct LinkNode *next;
}LinkNode;
typedef struct{
LinkNode *front,*rear;
}LinkQueue;
void InitQueue(LinkQueue &Q){
Q.front = Q.rear=(LinkNode *)malloc(sizeof(LinkNode));
Q.front->next = NULL;
}
bool IsEmpty(LinkQueue &Q){
if(Q.front==Q.rear)
return true;
else
return false;
}
void EnQueue(LinkQueue &Q,int x){
LinkNode *s = (LinkNode *)malloc(sizeof(LinkNode));
s->data = x;
s->next = NULL;
Q.rear->next = s;
Q.rear = s;
}
bool Dequeue(LinkQueue &Q,int &x){
if(Q.front==Q.rear)
return false;
LinkNode *p = Q.front->next;
x = p->data;
Q.front->next=p->next;
if(Q.rear == p)
Q.rear = Q.front;
free (p);
return true;
}
int main(){
LinkQueue Q;
InitQueue(Q);
cout<<"初始化完成"<<endl;
if(IsEmpty(Q)==1)
cout<<"此时队空"<<endl;
cout<<"请输入入队元素个数"<<endl;
int num;
cin>>num;
for(int i = 0;i<num;i++){
cout<<"请输入第"<<i+1<<"个元素"<<endl;
int x;
cin>>x;
EnQueue(Q,x);
}
cout<<"出队前"<<endl;
LinkNode *q = Q.front->next;
while(q){
cout<<q->data;
if(q->next!=NULL)
cout<<"-";
q = q->next;
}
cout<<endl;
int elem;
Dequeue(Q,elem);
cout<<"出队后"<<endl;
q = Q.front->next;
while(q){
cout<<q->data;
if(q->next!=NULL)
cout<<"-";
q = q->next;
}
cout<<endl;
return 0;
}