收藏 分享(赏)

数据结构实验七:队列实验.doc

上传人:hskm5268 文档编号:7778406 上传时间:2019-05-25 格式:DOC 页数:5 大小:122KB
下载 相关 举报
数据结构实验七:队列实验.doc_第1页
第1页 / 共5页
数据结构实验七:队列实验.doc_第2页
第2页 / 共5页
数据结构实验七:队列实验.doc_第3页
第3页 / 共5页
数据结构实验七:队列实验.doc_第4页
第4页 / 共5页
数据结构实验七:队列实验.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

1、一,实验题目实验七:假设以数组 sem存放循环队列的元素,同时设变量 rear 和 num 分别作为队尾指针和队中元素个数记录。试讨论判别此循环队列的队满条件,写出相应的入队和出队算法,并通过运行验证之。二,问题分析本程序要求实现用数组 sem存放循环队列的元素,并设变量 rear 和 num 分别作为队尾指针和队中元素个数记录。实现出队和入队操作。完成这些功能需要解决的关键问题是建立队列,插入一个对列元素和队列元素的出队。1, 数据的输入形式和输入值的范围:队列元素为整数。插入的队列元素也为整数。2, 结果的输出形式:根据选择菜单,结果输出的可以使队列元素,可以使出队或入队后的队列。3, 测

2、试数据:(1)一开始输入的队列元素为:456,34,543,123,56,87(2)选择菜单 2 后,入队的队列元素为 45(3)选择菜单 1 后,队列的首元素出队三,概要设计(1)为了实现上述程序的功能,需要:A,构造一个空队列B,实现队列元素的入队功能C,实现队列元素的出队功能D,队列的输出E,在屏幕上显示菜单操作(2)本程序包含 5 个函数:a,主函数 main()b,建立空队列函数 set()c,队列元素入队函数 insert()d,队列元素出队函数 del()e,队列元素输出函数 display()各函数间关系如右图所示:四,详细设计(1)结点类型定义:typedef struct

3、node int semaxlen;int rear,num;seqstack;(2)队列置空函数伪代码:main()set()insert()del()display()seqstack *set()seqstack *s;s=(seqstack*)malloc(sizeof(seqstack);s-rear=0; s-num=0;return s;(3)队列入队函数伪代码:seqstack *insert(seqstack *p,int x)if(p-num=maxlen) printf(“队列已满!n“); else if(p-rearserear=x; p-rear+; p-num+;

4、if(p-rear=maxlen)p-se0=x; p-rear=1; p-num+;return p;(4)队列入队函数伪代码:seqstack *del(seqstack *p)p-num-; return p;(5)输出队列元素伪代码:void display(seqstack *p) int i;if(p-numrear)for(i=0;inum;i+) printf(“%d “,p-sep-rear-p-num+i);else for(i=0;inum;i+) printf(“%d “,p-se(maxlen+p-rear-p-num+i)%maxlen);五,源代码#include

5、 “stdio.h“#include “malloc.h“#define maxlen 100typedef struct node /队列的结构定义int semaxlen;int rear,num;seqstack;seqstack *set() /建立空队列函数seqstack *s;s=(seqstack*)malloc(sizeof(seqstack);/申请空间s-rear=0;s-num=0;return s;seqstack *insert(seqstack *p,int x) /向队列中插入元素函数if(p-num=maxlen) /如果元素的个数大于队列的最大长度print

6、f(“队列已满!n“); /则输出队列已满else /当队列元素未满时if(p-rearsep-rear=x; /则直接将元素插在队尾即可p-rear+; /使 p 指向刚插入的元素p-num+; /元素的个数加 1if(p-rear=maxlen) /如果队尾元素的下标等于队列的最大值p-se0=x; /则将元素插在队列的首位置p-rear=1; /将尾指针指向下标为 1 的位置p-num+; /元素个数加 1return p; /返回该队列seqstack *del(seqstack *p) /队列的出队函数p-num-; /出队时,队列中的元素个数减一return p; /返回该列队vo

7、id display(seqstack *p) /输出队列中元素的函数int i;if(p-numrear) /如果队列中的元素个数小于队尾元素的下标for(i=0;inum;i+)printf(“%d “,p-sep-rear-p-num+i); /输出队列中的元素else /如果队列中的元素个数大于队尾元素的下标for(i=0;inum;i+)printf(“%d “,p-se(maxlen+p-rear-p-num+i)%maxlen); /输出队列中的元素void main() /主函数seqstack *s; /定义一个队列结构类型指针 sint x;s=set(); /调用建立空队

8、列函数printf(“输入队列的元素、当输入 0 是表示输入结束n“);scanf(“%d“,while(x!=0) /当 x 不等于 0 时s=insert(s,x); /调用队列插入函数,插入元素 xscanf(“%d“,do /实现菜单选择功能printf(“1.队列元素出队即删除n“);printf(“2.输入要插入队列的元素n“);printf(“3.输出队列的队列元素n“);printf(“0.退出n“);printf(“请选择你需要对该队列的操作:n“);scanf(“%d“,switch(x)case 1:s=del(s); /队列元素出队break;case 2:printf

9、(“请输入要插入的数据元素:n“);scanf(“%d“,s=insert(s,x);break;case 3:display(s);printf(“n“);break;default:break;while(x!=0);六,调试分析当直接将元素插在队尾时,在使用时混淆了数组和指针的使用方法,导致错误,应该是 p-sep-rear=x,而却写成 p-serear=x 导致了错误。错误提示如下:七,使用手册用户在使用时,根据界面提示,首先输入一系列整型的队列元素,当输入 0 时,队列元素输入结束。此时,出现一个菜单选择,当用户选 1 时,进行队列元素出队操作;当用户选 2 时,进行入队元素出队操作;当用户选 3 时,输出该队列;输入 0 时,改程序结束。此程序就是这样一个执行过程,用户根据提示进行操作即可。八,测试结果

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报