第03次作业-栈和队列

1.学习总结

2.PTA实验作业

2.1 题目1:字符串是否对称(20 分)
2.2 设计思路(伪代码或流程图)
定义i记录字符个数;
定义k判断字符串是否对称; 
定义数组a[i]储存字符;
while
    S->Top1不等于S->MaxSize;
do
    将字符入栈;
end
while
    S->Top1-1不等于-1;
do
    字符出栈;
    判断是否对称;
end 
2.3 代码截图


2.4 PTA提交列表说明


错误1:将大写的S写成了小写的;

错误2:没有弄清楚栈顶元素的位置,没有找对进行比较的元素对应位置;

解决方法:将小写s改为大写,通过调试找到比较元素对应位置;

2.1 题目2:表达式转换
2.2设计思路(伪代码或流程图)
定义len来记录字符串长度;
定义数组a输入存储字符;
定义数组b来存储字符输出顺序;
for i=0 to len-1
    判断a[i]是否为数字,是则存入数组b;
    若不是则入栈;
    根据符号优先级判断符号出栈顺序;
end for
2.3 代码截图



2.4 PTA提交列表说明。


错误1:使用getchar()读取字符,导致字符进出栈错误.

错误2:以为表达式不超过20个字符是数字加符号不超过20.

解决方法:将getchar()改为gets(),改变数组的存储范围。

2.1 题目3:jmu-报数游戏
2.2设计思路(伪代码或流程图)
定义数组 a存储人的编号;
定义数组b存储报到m的人的编号;
定义count记录队列的元素个素;
while count大于等于1
do  
    将报到m前面的编号出队,再重新入队;
    记录报到m的编号,并将其出队;
    在队列元素小于m时,将剩下的元素出队;
end
2.3 代码截图

2.4 PTA提交列表说明。


错误1:提交时没有把编译环境改为c++.

错误2:漏了判断报到数大于总人数的情况.

错误3:一开始的时候没有把元素全部入队,而是入到第m个的时候把m前面的全部出队,再重新入队,导致有些数根本没有入队。

解决方法:将环境改为c++,加上判断报到数是否大于总人数的表达式,将元素先全部入队,再判断它们的出队顺序和再入队顺序。

3.截图本周题目集的PTA最后排名

3.1 栈PTA排名

3.2 队列PTA排名

3.3 我的总分:2分

4. 阅读代码

链接:https://gitee.com/zhoubinghui/data_structure/blob/master/%E9%98%9F%E5%88%97/7-5%EF%BC%88%E9%80%89%E5%81%9A%EF%BC%89%20%E5%A0%86%E6%A0%88%E6%A8%A1%E6%8B%9F%E9%98%9F%E5%88%97.cpp

功能:堆栈模拟队列

优点:简单易懂,很容易看懂如何使两个堆栈模拟出一个队列。

5. 代码Git提交记录截图

posted @ 2018-04-07 20:51  张馨玙  Views(146)  Comments(10Edit  收藏  举报