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代码:


posted @ 2019-04-21 21:07  玥如  阅读(234)  评论(0编辑  收藏  举报