• 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-表达式求解

    错误代码:

     

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

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

  • 相关阅读:
    安装PetShop后调试的诸多问题
    初学FF(火狐)的扩展(Extensions)
    发现JavaScript中Number的toFixed()四舍五入时的一个问题,请教大虾!(原来是浏览器问题)
    PHP哪用手工配置啊。。。哎。。真是的。
    新鸟文章:foreach里的Sqlcommand(有SqlTransaction)
    说下按位异或(^)和按位与(&)的一点知识(没技术含量的)
    How browers work?
    开篇:希望结交各位,共同学习进步!
    第01章 基础知识
    20060818网摘
  • 原文地址:https://www.cnblogs.com/qqcom/p/10742617.html
Copyright © 2020-2023  润新知