欢迎来到天天文库
浏览记录
ID:58234922
大小:67.50 KB
页数:8页
时间:2020-05-19
《用两个栈模拟一个队列,并实现判断栈空.栈满以及入队和出队操作.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、《数据结构》实验报告班级:JS姓名:葛赛磊学号:E-mail:@qq.com日期:2012.10.25◎实验题目:用两个栈模拟一个队列◎实验目的:理解并掌握栈与队列的特点,以及他们之间的联系和区别◎实验内容:用两个栈模拟一个队列,实现判断栈空.栈满以及入队和出队操作。一、需求分析1、输入的形式和输入值的范围:①输入字母选择相应操作;②输入需要进队或出队的元素个数。2、输出的形式:输出入队或者出队的元素,若队空则输出队空以及队空时输出的元素及其个数;若队满则输出“队已满”,并输出截止队满时出队的元素个数。3、程序所能达到的功能:(1)执行任意个
2、数元素的入队操作(2)执行任意个数元素的出队操作(3)判断队空(4)判断队满4、测试数据:操作选项输入a;入队元素个数:3123操作选项输入b;出队元素个数:2操作选项输入a;入队元素个数12111213141516171819202122二概要设计(1)抽象数据类型定义:定义两个链表:typedefstruct{intdata[Maxsize];inttop;}seqstack;seqstacks1,s2;输入输出元素个数:intn,m,x,i,j;操作选项控制符:charw,a,b,c;(2)主程序的流程:1.根据提示输入符号选择相应操作
3、;2.根据选择执行相关操作①进行入栈:判断栈是否已满,并进行入队操作并输出成功入队的元素个数,②进行出栈;判断栈是否为空,并进行出栈操作,输出成功出栈的元素个数(3)其函数之间调用关系如下:main()模块(开始创建链表)②操作判定模块入队操作模块模块出队操作模块块调用结束后,main()函数返回0执行结束后,重新执行判定操作和循环。注:大箭头表示函数调用,小箭头表示程序执行过程;三详细设计1.元素类型typedefstruct{intdata[Maxsize];inttop;}seqstack;seqstacks1,s2;intn,m,x,
4、i,j;charw,a,b,c;2.每个模块的分析:(1)主程序模块://主函数intmain(){s1.top=-1,s2.top=-1;//执行选择操作cout<<"执行进队操作请输入a;执行出队操作请输入b;停止操作请输入c"<>w;while(w!='c'){//判断栈满,并执行入队操作if(w=='a'){cout<<"请输入入队元素个数"<>n;for(i=0,j=0;i>x;if(s1.top==Maxsize-1&&s2.top!=-1){if(i==j)
5、cout<<"队已满"<>m;for(j=0;j6、ut<<"执行进队操作请输入a;执行出队操作请输入b;停止操作请输入c"<>w;}return0;}(2)入队函数voidpush(seqstack&s1,intx){//1栈满,2栈空,进行倒栈操作if(s1.top==Maxsize-1&&s2.top==-1){while(s1.top!=-1){s2.top++;s2.data[s2.top]=s1.data[s1.top];s1.top--;}s1.top++;s1.data[s1.top]=x;}else{s1.top++;s1.data[s1.top]7、=x;}}(3)出队函数voidpop(seqstack&s2){intx;if(s2.top==-1){while(s1.top!=-1){s2.top++;s2.data[s2.top]=s1.data[s1.top];s1.top--;}{x=s2.data[s2.top];s2.top--;cout<8、行进队操作请输入a;执行出队操作请输入b;停止操作请输入c;2、测试结果与分析;操作选项:输入a;入队元素个数:3123共入队3个元素;操作选项输入b;出队元素个数
6、ut<<"执行进队操作请输入a;执行出队操作请输入b;停止操作请输入c"<>w;}return0;}(2)入队函数voidpush(seqstack&s1,intx){//1栈满,2栈空,进行倒栈操作if(s1.top==Maxsize-1&&s2.top==-1){while(s1.top!=-1){s2.top++;s2.data[s2.top]=s1.data[s1.top];s1.top--;}s1.top++;s1.data[s1.top]=x;}else{s1.top++;s1.data[s1.top]
7、=x;}}(3)出队函数voidpop(seqstack&s2){intx;if(s2.top==-1){while(s1.top!=-1){s2.top++;s2.data[s2.top]=s1.data[s1.top];s1.top--;}{x=s2.data[s2.top];s2.top--;cout<8、行进队操作请输入a;执行出队操作请输入b;停止操作请输入c;2、测试结果与分析;操作选项:输入a;入队元素个数:3123共入队3个元素;操作选项输入b;出队元素个数
8、行进队操作请输入a;执行出队操作请输入b;停止操作请输入c;2、测试结果与分析;操作选项:输入a;入队元素个数:3123共入队3个元素;操作选项输入b;出队元素个数
此文档下载收益归作者所有