博客作业03--栈和队列
1.学习总结(2分)
1.1 写出你认为本周学习中比较重要的知识点关键词,如逻辑结构、栈、队列、存储结构等。
顺序栈,链栈,环形队列,顺序队列,kmp算法。
1.2 使用思维导图将这些关键词组织起来。
2.PTA实验作业(4分)
2.1.1 题目1:字符串是否对称
2.1.2 设计思路(伪代码或流程图)
定义结构体
定义指针data存储数据
定义top指向栈的顶部
定义数组ch[90]存储字符,e用于存放出栈元素
for i=0 to ch[i] = 0
将ch[i]内的元素存入栈内
end for
for i =0 直到 s -> top为止
比较出栈的元素与栈底的元素是否相等
不等就退出循环输出no,循环结束后输出yes
end for
2.1.3 代码截图
2.1.4 PTA提交列表说明。
本题用scanf导致多次段错误,但是在devc上可以运行,后来换了get函数后才答案正确
2.2.1 题目2; 报数游戏
2.2.2 设计思路
输入count1表示报的数,输入n表示人数
for i=0 to i<n
按顺序将1到n个数字入队
for(;;)
遍历队列,同时用count记录当前报的数,
若符合输入的数则出队且输出,否则插入队尾
直到最后一个数时,输出该数且结束循环
若报的数大于队列人数则输出错误提示
2.2.3 代码截图
2.2.4 PTA提交列表说明。
无明显错误,只是忘记用c++编译器了。
2.3.1 题目3银行业务队列简单模拟
2.3.2 设计思路
用队列函数定义队列a和队列b
定义n代表队列长度,num表示顾客的编号
输入顾客数n
for i = 0 to n
将顾客的编号存入队列,偶数存入b,奇数存入a
end for
while(!p.empty()&&(!q.empty()))
输出出队a 2次,再输出出队b 1次
若a队列或者b队列为空,则输出不为空队列的剩下数据
2.3.3
2.3.4 PTA提交列表说明
循环结束判定条件不正确,导致多次运行超时,同时未考虑到n为0时的情况
3.截图本周题目集的PTA最后排名(3分)
3.1 栈PTA排名
3.2 队列PTA排名
3.3 我的总分:180
4. 阅读代码(必做,1分)
#include"head.h"
void main()
{
SqStack s;
char ch, c;
InitStack(&s);
printf("请输入字符文件,以ctrl+z键表示结束输入:\n");
ch = getchar();
while (ch != EOF)
{
//处理一行数据
while (ch != EOF && ch != '\n')
{
switch (ch)
{
case '#': Pop(&s, &c); break;
case '@': ClearStack(&s); break;
default: Push(&s, ch); break;
}
//处理下一行数据
ch = getchar();
}
StackTraverse(s);
ClearStack(&s);
if (ch!=EOF)
ch = getchar();
}
DestoryStack(&s);
system("pause");
}
该代码可进行行编辑,‘#’可以退掉前一个字符,‘@’可以退掉前行的字符,该代码以ctrl z代表结束,
用switch对字符进行判断,出现“#”则出栈,否则用 ClearStack(&s)函数清空栈,其余字符存入栈中。
5. 代码Git提交记录截图
posted on 2018-04-14 20:51 FaceTheWind 阅读(145) 评论(3) 编辑 收藏 举报