数据结构链队列的实现 期末作业

#include
#include
#include

typedef struct QNode
{
int data;
struct QNode *next;
}QNode,*QueuePtr;

struct LinkQueue
{
QueuePtr front;
QueuePtr rear;
};

void Printf(LinkQueue &Q)
{
QueuePtr p;
p=Q.front;
//printf("输出队列中的元素为:\n");
while(!(p==Q.rear))
{
p=p->next;
printf("%d ",p->data);
}
printf("\n");
}//输出函数Printf

void InitQueue(LinkQueue &Q)//(1)初始化一个带结点的空队列;
{
printf("*********************\n开始初始化,请稍等……\n");
Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode));
if(!Q.front) exit(0);
Q.front->next=NULL;
printf("初始化一个带头结点的空队列成功!\n*********************\n");
}//初始化函数InitQueue

void Creat(LinkQueue &Q)//(2)创建一个包含5个不大于100的正整数值的队列(5个值由计算机随机产生);
{
printf("请您输入一个随机数种子:\n");
int n;
int i;
QueuePtr p;
scanf("%d",&n);
srand(n);
for(i=0;i<5;i++)
{
p=(QueuePtr)malloc(sizeof(QNode));
p->data=rand()%100+1;
p->next=NULL;
Q.rear->next=p;
Q.rear=p;
}
printf("创建出的队列为:\n");
Printf(Q);
}//创建函数Creat

void EnQueue(LinkQueue &Q)//(3)输入一个数e插入队尾;
{
int e;
printf("请输入您要插入的e的值:\n");
scanf("%d",&e);
QueuePtr p;
p=(QueuePtr)malloc(sizeof(QNode));
p->data=e;
p->next=NULL;
Q.rear->next=p;
Q.rear=p;
printf("将数e插入队尾成功!\n");
printf("输出队列中元素为:\n");
Printf(Q);
}//在队尾插入一个数EnQueue

void DeQueue(LinkQueue &Q)//(4)删除队列中的第一个元素;
{
QueuePtr q;
int e;
if(Q.front==Q.rear)
{
printf("为空队列,无效!");
exit(0);
}
q=Q.front->next;
printf("要删除的队头是:\n");
e=q->data;
printf("%d\n",e);
Q.front->next=q->next;
if(Q.rear==q) Q.rear=Q.front;
free(q);
printf("删除对头元素\n");
printf("输出队列中元素为:\n");
Printf(Q);
}//删除元素的函数DeQueue


void f6()//退出程序
{
printf("谢谢使用,下次再见!\n");
exit(0);
}

void main()
{
printf("\t欢迎您使用韩婷编写的程序!\n\n");
for(;;)
{
printf("请您输入序号并按回车键选择所要使用的功能\n");
printf("**********************************************************\n");
printf(" (1)初始化一个带头结点的空队列;\n");
printf(" (2)创建一个包含5个不大于100的正整数值的队列(5个值由计算机随机产生);\n");
printf(" (3)将一个数插队尾;\n");
printf(" (4)删除队头元素;\n");
printf(" (5)输出队列中所有元素;\n");
printf(" (6)退出程序\n");
printf("**********************************************************\n");

LinkQueue Q;
int a;
scanf("%d",&a);
if(a>6)printf("您的输入有误,请重新输入!\n");

switch(a)
{
case 1:InitQueue(Q);break;
case 2:Creat(Q);break;
case 3:EnQueue(Q);break;
case 4:DeQueue(Q);break;
case 5:Printf(Q);break;
case 6:f6();
}
}
}

相关文档
最新文档