队列的插入和删除(推荐)_顺序表的插入删除
队列的插入和删除(推荐)由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“顺序表的插入删除”。
实验五
队列的插入和删除
实验五 队列的插入和删除
姓名: 学号: 日期:
一、实验目的:
1.熟悉队列的基本结构、特点
2.熟悉队列的插入和删除的基本算法和实现
二、实验条件: 1.硬件:一台微机
2.软件:Windows操作系统和C语言系统(MS VC++6.0)
三、实验方法:
确定存储结构后,上机调试实现顺序队列的插入和删除运算。
四、实验要求:
1、编写函数实现队列的删除功能
2、编写函数实现队列的插入功能
2、编写程序实现以下功能
(1)创建一个队列:12,15,87,96,3;(2)调用删除函数,分别令队列中的三个元素出队列;(3)调用插入函数,使元素6入队列;(4)输出最终队列的元素。
五、算法流程图:
第 1 页
共 4 页
实验五
队列的插入和删除
六、实验算法:
#include #define MAXSIZE 100
int queue[MAXSIZE];/*定义全局变量数组储存循环队列*/ int front=-1,rear=-1;/*整型全局变量做头、尾指针标记*/
void addqueue(int x)/*入队函数*/ { if(front==(rear+1)%MAXSIZE)/*溢出判断*/ {
printf(“循环队列已满,上溢!n”);
exit(1);/*溢出中断*/ } else {
rear=(rear+1)%MAXSIZE;
queue[rear]=x;} }
int delqueue()/*出队函数*/ { int x;if(front==rear)/*溢出判断*/ {
printf(“循环队列已空,下 溢!n”);
exit(1);/*溢出中断*/ } else
第 2 页
共 4 页
实验五
队列的插入和删除
}
void main(){
int i=0,x,n;do {
/*输入不可预测时,向此处标记跳转*/ scanf(“%d”,&i);switch(i){ case 1 : /*判断入队*/
printf(“请输入入队元素个数:”);scanf(“%d”,&n);printf(“请输入入队元素:n”);for(;n;n--){
} break;printf(“请输入出队元素个数:”);scanf(“%d”,&n);printf(“出队元素为:n”);for(;n;n--){ } printf(“n”);break;printf(“队列内所有元素为:n”);for(x=front+1;x!=rear+1;x=(x+1)%MAXSIZE)/*遍历打印*/ { }
第 3 页
共 4 页
printf(“%d ”,queue[x]);x=delqueue();printf(“%d ”,x);scanf(“%d”,&x);addqueue(x);{
} return x;/*返回出队元素*/ front=(front+1)%MAXSIZE;x=queue[front];loop:printf(“请输入操作代码(1入队,2出队,3打印,4终止): _b”);case 2 : /*判断出队*/ case 3 : /*判断打印*/
实验五
队列的插入和删除
}
} while(1);/*此处强制循环*/
} printf(“n”);printf(“n”);break;exit(0);goto loop;/*输入不可预测时跳转*/ case 4 : /*判断用户中断*/ default :
七、程序介绍:
1、程序功能:实现有限的循环队列的任意入队、出队、打印工作
2、利用循环队列存储方式,节省顺序队列存储空间
3、用户可任意操作,同时方便终止
4、用户界面较为友好
八、效果图:
九、心得体会:
本次实验比较简单,与前几次数据结构实验基本类似。考虑到是最后一次数据结构实验,我编了一个功能较为全面的程序。此程序可任意实现插入删除与打印,而不是像之前我编的程序那样只能实现要求的步骤。
该程序尚有不足,由于对计算机底层存储和接口技术不熟悉,这个程序在实际运行时的时间复杂度较高。
第 4 页
共 4 页