DS博客作业03--栈和队列

 

1.本周学习总结

栈和队列操作相似,不同的是栈为后进先出,队列为先进先出。学了queue与stack函数后,运用这两个函数来进行有关的入队(栈)出队(栈)、取队头队尾非常方便,在做题时候运用可以减少代码量。掌握了基本操作函数后,在做某些题时仍觉得困难,还需继续加强锻炼。

2.PTA实验作业

2.1.题目1:7-2 jmu-ds-符号配对

2.1.1设计思路

本题只需考虑小中大括号三种情况,运用while循环来遍历字符串,循环当中采用switch语句来判断左右括号,遇到左括号时将其进栈,遇到右括号时取栈顶,然后用核查是否匹配函数Match来判断括号是否配对,不配对则提前结束循环并输出相应内容;配对的话则将栈顶出栈,方便下一个括号的判断。循环结束后,若栈为空,则说明括号都匹配;若还有未出栈的,则不匹配。

2.1.2代码截图

 

 

 

2.1.3本题PTA提交列表说明。

  • Q1:刚开始运用str字符数组来存放字符串,循环时用str[i] i++来循环,出现编译错误。
  • A1:定义指针*p来代替str数组,循环当中运用指针递增来循环。
  • Q2:没判断括号是否配对,而是用s.top()==*p来判断,设计错误,将匹配认为是相等。
  • A2:在每个遇到右括号的case语句中增加判断是否配对的语句,不匹配则提前结束,匹配则出栈。
  • Q3:switch语句中设计判断三个判断是否配对的语句后出现段错误。
  • A3:另外设计Match函数来判断括号是否匹配,将栈顶符号和*p传入函数中,配对则返回1,不配对返回0,答案正确

 

2.2.题目2:6-12 jmu-ds-舞伴问题

2.2.1设计思路

函数题,设计思路省略。

2.2.2代码截图

 

2.2.3本题PTA提交列表说明。

  • Q1:起初没认真看函数上边的#define定义的内容,出现如Maxsize等函数中没有的东西,出现编译错误。
  • A1:将函数中的Maxsize改为define中的内容,return内容也改为OK与ERROR。
  • Q2:  输出时两个人之间少输出一个空格,出现格式错误。
  • A2:修改DancePartner函数里的cout内容,答案正确。

2.3.题目3:jmu-报数游戏

2.3.1设计思路

定义队列,将游戏人数按编号依次进队,定义变量i循环自增,用i求余m来判断要出队的是几号,i求余m=0时,输出号数,再将此数出队,求余m不等于0时,定义临时变量k来存放这个数,再将其出队,之后再让k进队构成循环,直至队列为空。

2.3.2代码截图

 

 

 

2.3.3本题PTA提交列表说明。

  • Q1:queue函数运用不熟练,出现少加front后面的括号等情况
  • A1:将不规则的地方修改。
  • Q2:不是要出队的所报号数的人再次进队设计出错;没考虑只有一个数时的情况
  • A2:运用k来储存需再次进队的队头元素,再将k进队;在循环开始时加上判断语句:if(s.front()==s.back())来判断。
  • Q3:当m>n时,应输出error,设计时误写为m<n时输出error。
  • A3:修改大小关系,当m>n时输出error。

2.4.题目4:7-6 银行业务队列简单模拟

2.4.1设计思路

输入n的数值
for i=1 to n
输入一个数num;
if(n为奇数)进入qA队列
else 进入qB队列
while(qA,qB均不为空时)
输出qA中的第一个数, 输出后让该数出队列   

if(qA出队列的次数为偶数倍)
        qB出队一个元素
end while

while(qA不为空)
    将qA中剩余元素输出 
while(qB不为空)
    将qB中剩余元素输出 
return 0;

 

2.4.2代码截图

 

 

2.4.3本题PTA提交列表说明。

 

  • Q1:队列相关函数运用出错,导致编译错误
  • A1:修改错误函数用法
  • Q2:为考虑奇数或偶数队列较长队列需继续出队的操作,答案错误
  • A2:在后边加上两个循环函数,并控制输出空格的格式,来输出较长队列的剩余元素。

3、栈和队列上机考试

错题及解决办法

1.符号配对

错题代码:

 

按老师上课所讲的思路来写,有了思路但是用代码具体表示出来会出现很多错误,函数设计上仍存在问题,代码量较大,错误也照不出来。

解决办法:在网上寻找到一种不用设计过于复杂的函数,而是在主函数中一步到位来解决问题的方法,感觉这种方法适合我一些,就按照此思路进行设计,解决问题。

2.jmu-ds-表达式求解

错误代码:

 

 

有基本做题思路:遇到运算符号的时候将栈里的元素出栈进行运算,然后将结果入栈,直至字符串结束,得出结果。但是具体代码实现起来对我来说仍存在困难,按自己的方法打出来是错误的。

解决办法:找同学询问好的方法,了解具体代码怎么实现后解决此问题。

 

posted @ 2019-04-21 21:27  郭坤  阅读(223)  评论(0编辑  收藏  举报