琥珀玲珑
琥珀玲珑的世界,也是你们的世界哦。大家一起来吧!!!!

//h1.h

#include<iostream>
typedef char QElemType;
typedef void Status;
using namespace std;
typedef struct QNode
{
 QElemType data;
 struct QNode *next;
}*QueuePtr;
typedef struct
{
 QueuePtr front;//队头指针
 QueuePtr rear;//队尾指针
}LinkQueue;

//function.h

#include"h1.h"

using namespace std;

LinkQueue InitQueue()    //构建一个空队列Q(初始化Q队列)

{

     LinkQueue Q;  

   Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode));

   if(!Q.front)  

       exit(0);

   Q.front->next=NULL;

   return Q;

}

Status EnQueue(LinkQueue &Q,QElemType e)         //向队列中插入一个元素

{  

      if(!Q.front)   

          cout<<"     不存在队列!"<<endl;

       else  

      {      

          QNode *p;       p=(QueuePtr)malloc(sizeof(QNode));      

           if(!p)       exit(0);    

           p->data=e;   

           p->next=NULL;    

         Q.rear->next =p;      Q.rear =p;  

      }

}

Status DestroyQueue(LinkQueue &Q)             //删除队列中的一个元素

{

       while(Q.front)  

      {   Q.rear=Q.front->next;  

           free(Q.front);   Q.front=Q.rear;

       }  

      cout<<"     成功销毁队列!"<<endl;

}

Status DeQueue(LinkQueue &Q)    //销毁队列

{

      if(!Q.front)   cout<<"     不存在队列!"<<endl;

       else  

      {      

          QNode *p;      QElemType e;    

           if(Q.front==Q.rear )       exit(0);     

           p=Q.front->next;       e=p->data;      

          Q.front->next=p->next;    

          if(Q.rear==p)     

             Q.rear=Q.front;    

         free(p);    

         cout<<"被删除的元素:"<<e<<endl;

       }

}

Status CreateQueue(LinkQueue &Q)              //创建一个队列

{  

      QElemType e;  cout<<"请输入创建队列的元素:";  

      cin>>e;

       while(e!='#')  

      {   EnQueue(Q,e);   cin>>e;  }

}

Status DispalyQueue(LinkQueue &Q)

{

       if(!Q.front)  

     {   cout<<"     不存在队列!"<<endl;  }

      else

     {      QNode *p;      p=Q.front->next;      cout<<"显示队列:";    

             while(p)    

            {       cout<<p->data;       if(p->next)        cout<<"->";          p=p->next ;      }    

             cout<<endl;

      }

}

//jiemain.h

#include<iostream>
using namespace std;
void jiemain()
{
 cout<<"                     链队列操作                       "<<endl;
 cout<<"    1.创建队列       2.显示队列       3.插入元素      "<<endl; 
 cout<<"    4.删除元素       5.销毁队列       6.退出队列      "<<endl;
}

//main.ccp

#include"function.h"
#include"jiemain.h"
using namespace std;
Status main()
{
 LinkQueue Q;
 int i,n=0;
 jiemain();
 Q=InitQueue(); 
 while(n!=1)
 {
  cout<<"输入操作号码:";
     cin>>i;
  switch(i)
  {
  case 1:CreateQueue(Q);break;
  case 2:DispalyQueue(Q);break;
  case 3:QElemType e;cout<<"请输入插入的元素:";cin>>e;
   EnQueue(Q,e);break;
  case 4:DeQueue(Q);break;
  case 5:DestroyQueue(Q);break;
  case 6:n=1;cout<<"   退出!   "<<endl;break;
  default:cout<<"输入错误!"<<endl;
  }
 }
}

 

posted on 2014-03-02 14:53  琥珀玲珑  阅读(375)  评论(0编辑  收藏  举报