DS博客作业03--栈和队列
1.本周学习总结
感觉这里的内容很容易理解,但是在代码的写法上很不堪。我看过很多次书上的代码,但还是不能完全记住,经常搞混。比如说:初始化顺序栈和判断栈是否为空的条件是让栈顶指针为-1,而链式栈是判断栈顶指针是否为NULL,在队列中,尾进头出,还有环形队列的判空为0,最好用的还是容器stack,方便了代码功能也齐全。
2.PTA实验作业
2.1题目①函数题:6-2 在一个数组中实现两个堆栈
2.1.1代码截图
2.1.2本题PTA提交列表说明
Q1:首先出来了最恶心的编译错。
A1:后来发现是分配空间错了。
Q2:编译过了之后,出现了答案错误。
A2:输出的时候有回车,给忘了,还是不够细心。
Q3:部分正确?
A3:进栈的时候指针的位置要先移动,把++提到前面去就行了。
2.2.题目②函数题:6-12 jmu-ds-舞伴问题
2.2.1代码截图
2.2.2本题PTA提交列表说明
Q1:男士女士怎么分开入栈?
A1:通过指针person[i].sex来进行区分。
Q2:答案错误?
A2:输出的时候错了,应该输出Fdancers->data[Fdancers->front].name.
2.3.题目③编程题:7-1 jmu-字符串是否对称
2.3.1设计思路:
判断字符串是否对称就是要从头尾一起入手,如果相同就继续判断,如果不同就结束判断。
2.3.2代码截图
2.3.3本题PTA提交列表说明
Q::在vs中刚开始出现了编译错误?
A:判断为空的条件出错,后来改了。
Q:运行错误?
A:判断相等的时候使用了头尾指针,用不熟练,后来发现太麻烦了,使用for循环就可以了,代码和算法还简单。
2.4.题目④编程题:7-5 jmu-报数游戏
2.4.1设计思路:
先自定义一个队列,队列存放n个数相当于报数。然后按规矩每到第m个输出并剔除一个,继续报数,直到m>n跳出循环,输出队列剩下的。
2.4.2代码截图
2.4.3本题PTA提交列表说明
本题在算法上刚开始我弄错了,我以为是n个数,报到第m个数的人输出并剔除,然后返回开头重新来过再报数。后来一支部队,发现是报m个数后接着报数,报到最后一个再返回开头再继续报数。读题能力还是不行。
3.栈和队列上机考试
错题及解决办法
3.1题目一:7-1 符号配对
3.1.1错误分析:
- 1.不知道该怎么读取所有字符
- 2.不知道怎么判别 /* 是否与*/配对
- 3.不能熟练的使用栈、队列等知识。
3.1.2解决办法:
- 1.代码读取使用getline(cin,ch)逐行读取;
- 2.可以换元,遇到 /* 可以用 < 代替入栈,遇到 */ 可以使 < 出栈。
- 体会:遇到另类的数据元素判别时我们可以使用换元法,读取元素时不用定死在scanf 或 cin 中,可以使用string库函数里的子函数。
3.2题目二:6-3 jmu-ds-表达式求解
3.2.1错误分析:
- 没有掌握后缀表达式的算法。
3.2.2代码: