标签:
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
typedef struct Node
{
int data;
struct Node * next;
}Node,*PNode;
typedef struct Queue
{
PNode front;
PNode rear;
}Queue,*PQueue;
//函数声明
void InitQueue(PQueue Q);
void EnQueue(PQueue Q);
void PrintQueue(PQueue Q);
void DeQueue(PQueue Q);
void showlist();
void selection(PQueue);
bool empty(PQueue);
int main()
{
Queue q;
InitQueue(&q);
selection(&q);
system("pause");
return 0;
}
void showlist()
{
system("color 3e");
cout<<"**********************************"<<endl;;
cout<<"************1.入队列**************"<<endl;
cout<<"************2.出队列**************"<<endl;
cout<<"************3.打印队列元素********"<<endl;
cout<<"************4.退出****************"<<endl;
cout<<"**********************************"<<endl;
}
void selection(PQueue q)
{
int opt;
showlist();
while(1)
{
cout<<"请选择你的操作:";
cin>>opt;
switch(opt)
{
case 1:
EnQueue(q);
system("color 7e");
break;
case 2:
DeQueue(q);
system("color 6e");
break;
case 3:
PrintQueue(q);
system("color 5e");
break;
case 4:
exit(-1);
}
}
}
//初始化
void InitQueue(PQueue Q)
{
Q->front=(PNode)malloc(sizeof(Node));
Q->rear=Q->front;
Q->front->next=NULL;
cout<<"初始化成功"<<endl;
}
//入队列
void EnQueue(PQueue Q)
{
int n;
int x;
cout<<"请输入要入队列的个数:";
cin>>n;
for(int i=1;i<=n;i++)
{
cout<<"请输入第"<<i<<"个元素的值:";
cin>>x;
PNode p;
p=(PNode)malloc(sizeof(Node));//申请节点
p->data=x;
p->next=NULL;
Q->rear->next=p;
Q->rear=p;
}
}
//打印队列元素
void PrintQueue(PQueue Q)
{
PNode p;
p=Q->front->next;
cout<<"遍历队列的结果是:"<<endl;
if(empty(Q))
cout<<"没有元素要打印!!"<<endl;
else
{
while(p->next!=NULL)
{
cout<<p->data<<" ";
p=p->next;
}
cout<<p->data<<endl;//打印最后一个元素
}
}
//出队列
void DeQueue(PQueue Q)
{
PNode p;
if(Q->front == Q->rear)
cout<<"对不起,没有元素,不能出队列!!!"<<endl;
else
{
p=Q->front->next; //指向要出队的元素
Q->front->next=p->next;
if(p->next=NULL)
Q->rear=Q->front;
cout<<"出队的元素是"<<p->data<<endl;
free(p);
}
}
bool empty(PQueue Q)
{
if(Q->front == Q->rear)
return true;
else
return false;
}
运行结果:

标签:
原文地址:http://my.oschina.net/lvguidong/blog/521528