数据结构(C语言)队列的基本操作

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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)

相关文档
最新文档