DS博客作业03--栈和队列

1.本周学习总结

本章主要学习了两种都操作受限的线性表:队列和栈
栈和队列有一定的区别,主要区别为栈只有栈顶指针可以操作,遵循后进后出的原则,而这个特点就可以实现字符串的逆置,而队列有队头队尾指针,遵循先进先出原则,通过队头队尾指针自增和自减的操作,实现元素进队出队。尤其是队列还有一种循环队列,其中对队头队尾指针操作比较特殊,在写这一类代码时,要注意队列是否为循环队列。相应的栈中也有特殊类型的栈,例如共享栈,共享栈就像将两个栈头对头拼接在一起,其中一个栈顶初始指向-1,一个指向最大容量,在进栈时,两个栈顶指针慢慢靠近直到两个栈顶指针指向同一个地址,表示栈满;要注意的时,进栈:top1自增,top2自减 出栈:top1自减,top2自增。
我在通过阅读同学的代码中,也学到了#include<string> #include <queue> #include <stack>这三个容器类型的模板参数,运用这三个模板参数大大减少了建栈,出栈,进栈一系列的代码量,在一些题目可以节约时间,但是这种容器类型也有一定的缺陷,在做一些较为复杂的题目,例如报数游戏这道题,我也尝试用容器类型的C++文件来写,但是发现像这样反而变得不方便。

2.PTA实验作业##

2.1.题目1:6-1 另类堆栈##

2.1.2代码截图##

2.1.3本题PTA提交列表说明。##


Q1:前两个测试点提示格式错误导致测试结果只会不换行输出
A1:查看输出样例,发现输出结果后要换行操作,在输出语句后输出换行符解决
Q2:在出栈操作中,没有将栈顶指针自减,导致运行超时
A2:若没有栈顶指针操作的话,栈顶指针在下次操作中指向为空导致出栈错误。

2.2 题目2:6-12 jmu-ds-舞伴问题##

2.2.2代码截图##

队列长度 :

入队操作:

判断队列是否为空及出对操作:

配对舞伴:

2.2.3本题PTA提交列表说明。##

Q1:多次出现编译错误问题,格式错误
A1:主要原因包括简单的字母大小写,‘;’的中英形式转换问题,以及队头和队尾指针与结构体中的名称不一致问题;格式错误与2.1.3中一致,仔细修改解决。
Q2:在编译器中运行出现输出单身舞伴的人数与性别不对应,配对成功,却多输出一个未配对者。
A2:在判断男女队列是否为空,将”||“改为”&&“,同时判断部位空条件先,输出配对者,达到女士队列和男士队列配对输出。

2.3 题目3:7-0 jmu-ds-栈与队列-stack、queue与string小综合##

2.3.1设计思路##

主要应用到了#include<string> #include <queue> #include <stack>三个容器类型的模板参数,运用这三个模板参数大大减少了建栈,出栈,进栈一系列的代码。
设计思路:
栈操作:将字符串字母一个一个入栈,str.size()获取字符串个数并输出,S.top()取栈顶元素输出,在之后取栈顶元素并做出栈操作直到栈空为止,同时判断输入字符与栈顶元素是否相同,不相同便进队;
队列操作:Q.size()取队列元素个数,Q.front()Q.back()输出队头,队尾指针所指元素,取队头指针所指元素并做出队操作直到队空为止。

2.3.2代码截图##


2.3.3本题PTA提交列表说明。##

Q1:多次提交出现编译错误的问题:![](https://img2018.cnblogs.com/blog/1475172/201904/1475172-20190421111746060-1985221637.png)
A1:#include<string> #include <queue> #include <stack> 属于C++类型的文件名,将编译器“C(gcc)”改为“C++(g++)”即可

2.4 题目4:7-1 jmu-字符串是否对称##

2.4.1设计思路##

利用对称性,将字符串存入栈中,再出栈栈顶元素(相当于逆置字符串),同时比较字符串中的字符与栈顶元素是否相同。

2.4.2代码截图##

2.4.3本题PTA提交列表说明。##

Q1:答案输出格式错误
A1:注意题目所给样例,修改输出格式解决。

3、栈和队列上机考试##

(1)6-3 jmu-ds-表达式求解##


错误原因:

(2)6-2 另类循环队列##




错误原因:在出栈操作中栈顶指针先自减再出栈栈顶元素。应先将栈顶元素出栈,再将栈顶指针指向下一个,否则出栈元素会变为下一个元素,导致答案错误。
体会:在进行出栈入栈操作时要注意栈顶指针的指向,避免栈顶指针指向为空或错误对象的问题,还有共享栈中栈顶指针的操作;相似的出队入队操作也要分清普通队列与循环队列的操作。普通队列:队头队尾指针自增为Q->front++与Q->rear++;循环队列:队头或队尾指针+1再对最大容量MaxSize求余

posted on 2019-04-21 21:37  啦啦啦。  阅读(773)  评论(0编辑  收藏  举报

导航