链式队列
来源:互联网 发布:js引用js文件 编辑:程序博客网 时间:2024/04/28 20:54
#include<iostream.h>
#include<malloc.h>
typedef struct QNode{
int data;
struct QNode *next;
}QNode,*QueuePtr;
typedef struct{
QueuePtr front;
QueuePtr rear;
}LinkQueue;
int InitQueue(LinkQueue &Q){
Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode));
if(!Q.front)return -1;
Q.front->next=NULL;
return 1;
}
int enQueue(LinkQueue &Q,int &e){
QueuePtr P;
P=(QueuePtr)malloc(sizeof(QNode));
P->data=e;
P->next=NULL;
Q.rear->next=P;
Q.rear=P;
return 1;
}
int destoryQueue(LinkQueue Q){
while(Q.front){
Q.rear=Q.front->next;
free(Q.front);
Q.front=Q.rear;}
return 1;
}
int clearQueue(LinkQueue &Q){
return 1;
}
int deQueue(LinkQueue &Q,int &e){
if(Q.front==Q.rear)return 0;
QueuePtr P;
P=(QueuePtr)malloc(sizeof(QNode));
P=Q.front->next;
e=P->data;
Q.front->next=P->next;
if(Q.rear==P)Q.rear=Q.front;
free(P);
return 1;
}
int Queueempty( LinkQueue &Q){
return(Q.front==Q.rear);
}
void main(){
LinkQueue Q;
InitQueue(Q);
int i;
do{
cout<<" 1: 插入元素;"<<endl;
cout<<" 2: 删除元素;"<<endl;
cout<<" 3: 判断队列是否为空;"<<endl;
cout<<" 4:毁掉队列 ;"<<endl;
cout<<" 5:清空队列 ;"<<endl;
cout<<" 请你选择操作号:"<<endl;
cin>>i;
switch(i)
case 1:
int e;
cout<<"请你输入要插入的元素:"<<endl;
cin>>e;
enQueue(Q,e);
}