第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提交记录截图

 

 

 

 

 

 




 

 

---恢复内容结束---

posted @ 2018-04-07 20:55  绅士xiang  阅读(490)  评论(1编辑  收藏  举报