数据结构(C语言)队列的基本操作
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验名称:实验四队列的基本操作
实验目的
掌握队列这种抽象数据类型的特点及实现方法。
实验内容
从键盘读入若干个整数,建一个顺序队列或链式队列,并完成下列操作:
(1)初始化队列;
(2)队列是否为空;
(3)出队;
(4)入队。
算法设计分析
(一)数据结构的定义
单链表存储结构定义为:
struct Node; //链表单链表
typedef struct Node *PNode;
int dui;
dui =1;
struct Node
{
int info;
PNode link;
};
struct LinkQueue
{
PNode f;
PNode r;
};
typedef struct LinkQueue *PLinkQueue;
(二)总体设计
程序由主函数、创建队列函数、判断是否为空队列函数、入队函数、出队函数、取数函数、显示队列函数、菜单函数组成。其功能描述如下:
(1)主函数:调用各个函数以实现相应功能
main()
{
PLinkQueue a; //定义链表a
int b,c,e; //b 菜单选择c选择继续输入e输入元素
do
{
//菜单选择
mune();
scanf("%d",&b);
switch(b)
{
case 1://初始化
a=create(); //初始化队列
case 2: //入队
do
{
printf("\n请输入需要入队的数:");
if(e!=NULL)
{
scanf("%d",&e);
enQueue(a,e);
}
printf("是否继续入队?(是:1 否:0)\n");
scanf("%d",&c);
}
while(c==1);
break;
case 3: //出队
c=frontQueue(a);
deQueue(a);
if(dui!=0)
{
printf("\n出队为:%d\n",c);
}
dui=1;
break;
case 4: //显示队中元素
showQueue(a);
break;
case 5:
return;
default:
printf("输入错误,程序结束!\n");
return;
}
}
while(a!=5);
{
return 0;
}
}
(三)各函数的详细设计:
Function1:
PLinkQueue create(void)//创队
{
PLinkQueue plqu;
plqu=(PLinkQueue)malloc(sizeof(struct LinkQueue));
if(plqu!=NULL)
{
plqu->f=NULL;
plqu->r=NULL;
printf("初始化成功!");
}
else
printf("初始化失败!");
return plqu;
}
Function2:
int isEmpty(PLinkQueue plqu)//判断是否为空
{
return(plqu->f==NULL);
}
Function3:
void enQueue(PLinkQueue plqu,int x)//入队
{
PNode p;
p=(PNode)malloc(sizeof(struct Node));
if(p==NULL)
printf("入队失败,请重新入队!");
else
{
p->info=x;
p->link=NULL;
if(plqu->f==NULL)
plqu->f=p;
else
plqu->r->link=p;
plqu->r=p;
}
}
Function4:
void enQueue(PLinkQueue plqu,int x)//入队
{
PNode p;
p=(PNode)malloc(sizeof(struct Node));
if(p==NULL)
printf("入队失败,请重新入队!");
else
{
p->info=x;
p->link=NULL;
if(plqu->f==NULL)
plqu->f=p;
else
plqu->r->link=p;
plqu->r=p;
}
}
Fubction5:
void deQueue(PLinkQueue plqu)//出队
{
PNode p;
if(plqu->f==NULL)
printf("队已经空了!\n");
else
{
p=plqu->f;
plqu->f=p->link;
free(p);
}
}
Function6:
int frontQueue(PLinkQueue plqu)//取数
{
if(plqu->f==NULL)
{
dui=0;
return 0;
}
else
{
return(plqu->f->info);
}
}
Function7:
void showQueue(PLinkQueue plqu)//显示队中的数输出队列{
PNode p;
p=plqu->f;
printf("队列中的数:");
if(plqu->f==NULL)