博客作业03--栈和队列
Posted TTTTT,T川
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了博客作业03--栈和队列相关的知识,希望对你有一定的参考价值。
一、学习总结(2分)
1.1 写出你认为本周学习中比较重要的知识点关键词,如逻辑结构、栈、队列、存储结构等。
- 数据结构分为逻辑结构和存储结构两大类。
- 数据的存储结构是指数据的逻辑结构在计算机中的表示。
- 栈、队列都是逻辑结构,是一种概念。存储结构是数据在内存中的存储方式。
- 逻辑结构分两大类:线性结构和非线性结构,线性结构中包括了链式结构和顺序结构。
1.2 使用思维导图将这些关键词组织起来。
二、PTA实验作业(4分)
题目1:7-1 jmu-字符串是否对称
1. 设计思路(伪代码或流程图)
输入字符串str
创建栈S
if(字符串为空)结束程序;
for i=0 to str[i]==\'\\0\'
把字符串里的元素一一放进栈S里
for i=0 to strlen(str)-1
栈中元素出栈,出栈的元素与输入字符串时元素顺序恰好颠倒
if 出栈元素有与原数组元素不相同的,则输出no,结束循环
if(全部匹配)输出yes
return 0;
2. 代码截图
3. PTA提交列表说明。
编译器运行时答案对了但是一直编辑错误,就对照了一下第一题的的代码的前一部分,发现居然是少了一个号。。
···
typedef struct SNode{
Status data;
int top;
}Stack; //这里原来少了一个星号
···
修改完之后还是不对,是一个小问题,忘记给false和true赋值了。
题目2:7-1 jmu-报数游戏
1. 设计思路(伪代码或流程图)
主函数
定义队列Q
定义整型变量,总人数n和规定退出位次m
输入m,n
if(n>m)输出error,结束程序
调用Push函数,将数存入Q中
调用Operation函数,实现游戏操作
Push函数
for int i=0 to m-1
Q->data[i]依次赋值1,2,3......m
返回Q;
Operation 函数
while(1)
令i=0从头开始遍历队列
while(未遍历完一次队列)
if元素数值为0
则跳过该元素,i+1且直接进行下一次内while循环
else
if 找到第n个
输出此时Q->data[i]的值,令找到的元素位置上的数等于0
i+1控制内while循环
end while
if 队列中只剩一个元素,退出外循环
end while
输出最后一个元素
2. 代码截图
3. PTA提交列表说明。
这道题刚开始为空判断对了,后来就写了主要的操作函数,没有答案正确,是输出弄错了,NULL后面没有加感叹号,以前也写过这种报数游戏的,我的想法就是让出去的数等于0,再控制循环。最后一个元素输出的时候我想了一会儿,虽然说写出来有点怪,但是还是可以通过的哈哈。
题目3:7-2 银行业务队列简单模拟
1. 设计思路(伪代码或流程图)
定义qA,qB两个队列表示A, B两个窗口
输入n的数值
for i=0 to n-1 //输入原始序列并分队
输入一个数num;
if(n为奇数)进入qA队列
else 进入qB队列
while(qA,qB均不为空时)
输出qA中的第一个数, 输出后让该数出队列
if(qA出队列的次数为偶数倍)
qB出队一个元素
end while
while(qA不为空)
将qA中剩余元素输出
while(qB不为空)
将qB中剩余元素输出
return 0;
2. 代码截图
3. PTA提交列表说明。
做这道题是在老师上课讲了C++原来有栈和队列的头文件之后(真是心痛啊前面一直push pop的),后来就百度了好久怎么直接用这个头文件 才做的。有一个小问题就是空格还是最后才修改好的。
三、截图本周题目集的PTA最后排名(3分)
本次2个题目集总分:125+215=340分
必做题共:205分
3.1 栈PTA排名
3.2 队列PTA排名
3.3 我的总分:
93+80=173分
得2分
四、阅读代码(必做,1分)
栈的压入弹出序列
输入两个整数序列,第一个序列表示栈的压入顺序,判断第二个序列是否为该栈的弹出顺序。例如,序列1、2、3、4、5是栈的压入序列,序列4、5、3、2、1是该栈的弹出序列,但4、3、5、1、2就不可能是该栈的弹出序列。
分析:建立一个辅助栈,把输入的第一个序列的数字依次压入辅助栈,并按照第二个序列的顺序依次从辅助栈中弹出,如果下一个弹出的数字刚好是栈顶数据,就直接弹出,如果不是,就把还没有入栈的数字压入辅助栈,直到遇到下一个需要弹出的数字。
以上是关于博客作业03--栈和队列的主要内容,如果未能解决你的问题,请参考以下文章