博客作业03--栈和队列
1.学习总结
2.PTA实验作业
2.1 题目1:jmu-字符串是否对称
2.1.1 设计思路
建栈S
定义数组str,并输入字符串
for i=0 to str[i]!=;\0'
把字符串进栈
for i=0 to str[i]!=;\0'
出栈并赋值给e
如果e与str[i]相等,flag=1
如果flag为0
输出yes
否则输出no
2.1.2 代码截图
2.1.3 PTA提交列表说明
第一次用C编译器编译错误,于是改用C++,提交后提示段错误,仔细浏览代码,发现我写的代码在出栈入栈时没有判断栈空栈满,修改代码,添加判断条件,提交后就对了。
2.2 题目2:列车厢调度
2.2.1 设计思路
定义字符数组str1,str2
输入1,2号铁轨列车顺序
建栈S
定义指针数组way
while(str1[i]!='\0')
如果 str1[i]与str2[j]相等
路径为1->2
如果栈顶与str2[j]相等
路径为3->2,栈顶元素出栈
如果str1[i]与str2[j]不相等
路径为1->3,str[i]入栈
如果S不为空
while栈S不为空
遍历str2余下元素
如果flag==0而且栈顶元素与str2[t]相等
路径为3->2,出栈
否则flag=1,出栈
如果flag为0,输出指针数组way
否则输出Are you kidding me?
2.2.2 代码截图
2.2.3 PTA提交列表说明
提交后“最长序列,一般情况,可行”这个测试点错误,于是我就测试了最长序列,但我只测试了比较简单的顺序,发现并没有错误,于是我就又去测试了其他的一些数据,终于发现程序中少了当栈顶与str2[j]相等时的情况,加上之后就正确了。
2.3 题目3:银行业务队列简单模拟
2.3.1 设计思路
建队列A,B
输入n
输入顾客编号,偶数去B队列,奇数去A队列
while((!QueueEmpty(A))||(!QueueEmpty(B)))
如果A不为空
A出队列并输出
如果A不为空
A出队列并输出
如果B不为空
B出队列并输出
2.3.2 代码截图
2.3.3 PTA提交列表说明
本题一遍就正确
3.截图本周题目集的PTA最后排名
3.1 栈PTA排名
3.2 队列PTA排名
3.3 我的总分:
227
4. 阅读代码
功能:输入两个整数序列,第一个序列表示栈的压入顺序,判断第二个序列是否为该栈的可能弹出顺序。假设压入栈的所有数字均不相同。
优点:对于解题的方法挺巧妙的,我刚看这个题目时还是有点懵的,它考虑了可能会有数据先入栈又马上出栈的一些情况,让我又学到了一些知识。
https://blog.csdn.net/tianya_team/article/details/50342489