数据结构实验队列附程序.docx

上传人:b****1 文档编号:12723179 上传时间:2023-04-21 格式:DOCX 页数:9 大小:15.32KB
下载 相关 举报
数据结构实验队列附程序.docx_第1页
第1页 / 共9页
数据结构实验队列附程序.docx_第2页
第2页 / 共9页
数据结构实验队列附程序.docx_第3页
第3页 / 共9页
数据结构实验队列附程序.docx_第4页
第4页 / 共9页
数据结构实验队列附程序.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

数据结构实验队列附程序.docx

《数据结构实验队列附程序.docx》由会员分享,可在线阅读,更多相关《数据结构实验队列附程序.docx(9页珍藏版)》请在冰豆网上搜索。

数据结构实验队列附程序.docx

数据结构实验队列附程序

实验三队列

一、实验目的

1.了解队列的特性。

2.掌握队列的顺序表示和实现。

3.掌握队列的链式表示和实现。

二、实验内容

实验3.3队列的顺序表示和实现

编写一个程序实现顺序队列的各种基本运算(采用循环队列),并在此基础上设计一个主程序,完成如下功能:

(1)初始化队列。

(2)建立顺序队列。

(3)入队。

(4)出队。

(5)判断队列是否为空。

(6)取队头元素。

(7)遍历队列。

实验3.4队列的链式表示和实现

编写一个程序实现链队列的各种基本运算,并在此基础上设计一个主程序,完成如下功能:

(1)初始化并建立链队列。

(2)入链队列。

(3)出链队列。

(4)遍历链队列。

#include

#include

#defineMAXQSIZE100

typedefstruct

{

int*base;

intfront;

intrear;

}SqQueue;

intInitQueue(SqQueue&Q)

{

Q.base=(int*)malloc(MAXQSIZE*sizeof(int));

if(!

Q.base)exit(0);

Q.front=Q.rear=0;

return0;

}//初始化顺序队列

intQueueLength(SqQueueQ)

{

inti;

i=(Q.rear-Q.front+MAXQSIZE)%MAXQSIZE;

printf("队列长度%5d\n",i);

if(i)printf("队列非空");

else

printf("队列为空");

return0;

}//判断队列是否为空

intEnQueue(SqQueue&Q,inte)

{

if((Q.rear+1)%MAXQSIZE==Q.front)return0;

Q.base[Q.rear]=e;

Q.rear=(Q.rear+1)%MAXQSIZE;

return0;

}//将元素e入队

intDeQueue(SqQueue&Q,inte)

{

if(Q.front==Q.rear)return0;

e=Q.base[Q.front];

printf("%5d\n",e);

Q.front=(Q.front+1)%MAXQSIZE;

return0;

}//删除元素e并返回其值

intGetHead(SqQueue&Q,inte)

{

if(!

(Q.rear-Q.front+MAXQSIZE)%MAXQSIZE)return0;

e=Q.base[Q.front];

printf("返回队头元素%5d\n",e);

return0;

}//返回队头元素e

voidPrintQueue(SqQueue&Q)

{

intk;

printf("顺序队列中的元素:

\n");

for(k=Q.front;k!

=Q.rear;k++)

printf("%5d",Q.base[k]);

printf("\n");

}//遍历顺序队列

voidmain()

{

inte,i,n;

SqQueueQ;

InitQueue(Q);

printf("1—元素入队;2—元素出队;3—返回队头元素;4—队列空否0—结束运行\n");

printf("\n");printf("\n");printf("\n");

printf("\n");printf("\n");

printf("选择:

");

scanf("%d",&n);

printf("\n");printf("\n");

while(n!

=0)

{

switch(n)

{

case1:

printf("入队元素:

");scanf("%d",&e);EnQueue(Q,e);PrintQueue(Q);printf("\n");printf("\n");break;

case2:

printf("出队元素:

");DeQueue(Q,e);PrintQueue(Q);printf("\n");printf("\n");break;

case3:

GetHead(Q,e);printf("\n");printf("\n");break;

case4:

QueueLength(Q);printf("\n");printf("\n");break;

}

printf("选择:

");

scanf("%d",&n);

printf("\n");printf("\n");

}

printf("结束运行。

再见!

\n");

}

链式队列

#include

#include

typedefstructQNode

{

intdata;

structQNode*next;

}QNode,*QueuePtr;

typedefstruct

{

QueuePtrfront;//队头指针

QueuePtrrear;//队尾指针

}LinkQueue;

 

intInitQueue(LinkQueue&Q)

{

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

if(!

Q.front)exit(0);

Q.front->next=NULL;

return0;

}//初始化链式队列

 

intEnQueue(LinkQueue&Q,inte)

{

QueuePtrp;

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

if(!

p)exit(0);

p->data=e;p->next=NULL;

Q.rear->next=p;

Q.rear=p;

return0;

}//在队尾插入元素e

 

intDeQueue(LinkQueue&Q,inte)

{

QueuePtrp;

if(Q.front==Q.rear)return0;

p=Q.front->next;

e=p->data;

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

if(Q.rear==p)Q.rear=Q.front;

free(p);

return0;

}//删除队头元素e

 

intPrintQueue(LinkQueue&Q)

{

QueuePtrp;

printf("链式队列中的元素");

if(Q.front->next!

=NULL)

{

p=Q.front->next;

if(Q.front->next!

=NULL)

do

{

printf("%5d",p->data);

p=p->next;

}while(p!

=NULL);

}

else

printf("队列为空\n");

printf("\n");

return0;

}//遍历链式队列

 

voidmain()

{

LinkQueueQ;

inte,m;

printf("\n");printf("\n");printf("\n");printf("\n");

printf("1——插入元素;2——删除元素;0——结束运行\n");

printf("\n");printf("\n");printf("\n");

 

InitQueue(Q);

printf("\n");printf("\n");

printf("选择:

");

scanf("%d",&m);

printf("\n");printf("\n");

while(m!

=0)

{

switch(m)

{

case1:

printf("插入元素:

");scanf("%d",&e);EnQueue(Q,e);PrintQueue(Q);printf("\n");printf("\n");break;

case2:

DeQueue(Q,e);PrintQueue(Q);printf("\n");printf("\n");break;

}

printf("选择:

");

scanf("%d",&m);

printf("\n");printf("\n");

}

printf("结束运行。

再见!

\n");

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1