DS博客作业03---栈和队列
1.本周学习总结
平时做相关作业的时候觉得自己会了,但是考试的时候发现自己其实还差很多。栈和队列比较相似,主要是控制的位置不一样,队列先进先出,栈先进后出。 栈是限定只能在表的一端进行插入和删除操作的线性表。 队列是限定只能在表的一端进行插入和在另一端进行删除操作的线性表。栈和队列有顺序和链式两种存储方式,个人认为链式更加的简单,直接调用函数就好。包括push(),pop(),empty(),栈的top(),队列的front(),back()。
2.PTA实验作业
2.1.题目1:6-1 另类堆栈
2.1.1设计思路
2.1.2代码截图
2.1.3本题PTA提交列表说明。
- 最开始,我写错函数了,编译错误。🤦
- 然后是变量名写错了,又编译错误。🤦
- 答案正确以后,稍微观察了一下--S->Top和S->Top--的区别。--S->Top是直接就减去了而S->Top--会先保持原样再进行减法运算。
2.2 题目2:6-12 jmu-ds-舞伴问题
2.2.1设计思路
2.2.2代码截图
2.2.3本题PTA提交列表说明。
- 在函数外面定义了Fdancers,Mdancers,而我在函数里面又定义了一次,造成了段错误
- 其中empty函数写错了,还有最后的输出有一些问题,造成答案错误
2.3 题目3:7-2 jmu-ds-符号配对
2.3.1设计思路
输入字符串
遍历数组
将左半边符号存入栈中
遇到右半边符号,判断栈里情况
相应左半边符号,出栈
栈为空
不匹配
遍历结束
栈空
配对成功
不空
配对失败
2.3.2代码截图
2.3.3本题PTA提交列表说明。
- 🤦main拼写错误,导致编译错误
- 根据题目给的例子,在栈不空但是不匹配中,是在判断过程中,直接输出了,虽然这样跟例题要求一样,但是与题目意思完全不一样,找了好久,才把它改成最后输出栈顶。
2.4 题目4:7-6 银行业务队列简单模拟
2.4.1设计思路
输入顾客数量
遍历数量
输入编号
偶数号存入lineA
奇数号存入lineB
当A,B都不为空
按照A先输出两个,B再输出一个的情况直到都为空
2.4.2代码截图
2.4.3本题PTA提交列表说明。
- 代码在dev上试过没什么问题,就交了
3、栈和队列上机考试
1.
7-2 jmu-报数游戏
定义 n,m,num,i=1,j,number;
输入n和m;
使num=n;
queue<int>line;
if(n<m)
输出error! return 0
i from 1 to n
入队line
while(num>=1)
j from 1 to m
出队并使出来的元素,再次入队
输出line.front()和空格
num--;
出队
错误分析
- 最开始只对了一半,后来发现自己过早的把num=n了,那是n还没有输入🤦,后来发现了,但是编译器没改成C++,考试的时候总是头脑发昏,以为是dev又自动修复了什么东西,发现没改了,编译器却又只剩下了C,当时就很慌乱,脑袋空空,最后代码一团乱麻。
后续改进
- 冷静,神志清晰真的很重要,可能还是平时太放松,缺乏考场的应变能力
2.
在一个数组中实现两个堆栈
错误分析
- 栈满的判断出现了问题
- Pop函数的return不正确,理解不到位
后续改进
- 平时做题只是做出来,其实很多时候题目的意思都不一定完全理解了,这导致,平时做题的时候出了问题可以询问同学,但独立完成的时候又总有一堆的问题,建议以后一道题,多做几遍吧 。