第03次作业-栈和队列
Posted 绅士xiang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第03次作业-栈和队列相关的知识,希望对你有一定的参考价值。
---恢复内容开始---
1.学习总结
使用思维导图将数据结构绪论、线性表、栈和队列等知识点组织联系起来。
2.PTA实验作业
7-1 jmu-字符串是否对称(20 分)
编写一个算法利用顺序栈判断一个字符串是否是对称串。所谓对称串是指从左向右读和从右向左读的序列相同。
输入样例:
abba
输出样例:
yes
输入样例:
abcd
输出样例:
no
2.2 设计思路(伪代码或流程图)
while(s1[i])
{
d.push(s1[i]);
i++;
}//*先将数列入栈。
while(!d.empty())
{
s2[i]=d.top();
d.pop();
i++;//*再将数列出栈,则得到相反的俩个字符数组;
再进行比较
2.3 代码截图(注意,截图、截图、截图。代码不要粘贴博客上。不用用···语法去渲染)
2.4 PTA提交列表说明。
思路没问题,编译的语言选错了
2.1 题目1:题目名称
7-2 符号配对(20 分)
请编写程序检查C语言源程序中下列符号是否配对:/*
与*/
、(
与)
、[
与]
、{
与}
。
输入格式:
输入为一个C语言源程序。当读到某一行中只有一个句点.
和一个回车的时候,标志着输入结束。程序中需要检查配对的符号不超过100个。
输出格式:
首先,如果所有符号配对正确,则在第一行中输出YES
,否则输出NO
。然后在第二行中指出第一个不配对的符号:如果缺少左符号,则输出?-右符号
;如果缺少右符号,则输出左符号-?
。
输入样例1:
void test()
{
int i, A[10];
for (i=0; i<10; i++) /*/
A[i] = i;
}
.
输出样例1:
NO
/*-?
输入样例2:
void test()
{
int i, A[10];
for (i=0; i<10; i++) /**/
A[i] = i;
}]
.
输出样例2:
NO
?-]
输入样例3:
void test()
{
int i
double A[10];
for (i=0; i<10; i++) /**/
A[i] = 0.1*i;
}
.
输出样例3:
YES
2.2 设计思路(伪代码或流程图)
首先就是把串全部读进来,合成一个大串,只保留括号即可。
然后再对新生成的串处理,读入左括号,直接压入栈顶。
如果读入的是右括号:
1.如果栈为空,那么缺少与之对应的左括号。、
2.如果栈顶元素与之不匹配,那么缺少与栈顶元素相匹配的右括号。
处理完之后,如果栈为空,则表示完全匹配,如果有剩余,那么就是缺少右括号。因为是输出第一个缺少的,所以直接输出栈尾的元素就可以。
2.3 代码截图(注意,截图、截图、截图。代码不要粘贴博客上。不用用···语法去渲染)
2.4 PTA提交列表说明。
2.1 题目1:题目名称
7-1 jmu-报数游戏(15 分)
报数游戏是这样的:有n个人围成一圈,按顺序从1到n编好号。从第一个人开始报数,报到m(m<n)的人退出圈子;下一个人从1开始报数,报到m的人退出圈子。如此下去,直到留下最后一个人。其中n是初始人数;m是游戏规定的退出位次(保证为小于n的正整数)。要求用队列结构完成。输出数字间以空格分隔,但结尾不能有多余空格。
输入样例:
5 3
输出样例:
3 1 5 2 4
输入样例:
5 6
输出样例:
error!
2.2 设计思路(伪代码或流程图)
先判定输入数据是否错误
if(x>n)
{
printf("error!");
return 0;
}
while(q.size())
{
for(i=1;i<=x;i++)
{
if(i!=x)
{
q.push(q.front());//对首接到对尾
q.pop();
}
else
输出队首,或队首出队
3.截图本周题目集的PTA最后排名
3.1 栈PTA排名
3.3 我的总分:
1.5
5. 代码Git提交记录截图
---恢复内容结束---
以上是关于第03次作业-栈和队列的主要内容,如果未能解决你的问题,请参考以下文章