链式队列

来源:互联网 发布: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);

}

原创粉丝点击