博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DS博客作业03--栈和队列
阅读量:5840 次
发布时间:2019-06-18

本文共 2986 字,大约阅读时间需要 9 分钟。

1.本周学习总结

  • 这次的上机考试是学习以来最差的一次。就算平时打过的题目,也由于某些原因,不是编译错误,就是得不到满分,很难受。明明觉得自己的代码没问题,可是就是查不出错误。这也体现了栈和队列的题目的灵活和难度。学习栈和队列,总给我一个感觉,好像是都在背代码,代码背住了,这个题目也许可以用用,一旦换了一个题,好像又无从下手了。很多时候也比较无奈。我问过了学长学姐们,寻求了一点建议。但是好像帮助不是很大。栈的学习,到目前为止,我都没有很实质性的突破。感觉问题很多,符号配对,我也只能理解出思路,但是要我脱离课本,根本打不出,不是这里漏,就是那里漏。表达式转换也是如此。总之,栈和队列的题目,在思考的时候一定要严谨很多。这次的上机测试,实话说错的挺冤枉的,都是一个两个小细节在耗费我的时间,明明平时很容易打出来的题目,到了考场上面估计是因为思想紧张,不是这里漏个分号,就是那里多个符号。我查不出来的主要原因还是想偷懒,写的时候不愿意把程序要求的其余函数打出来,用编译器运行,就是打题目需要的函数,这导致我全程都没有调试,查不出一些小错误。以后的学习中,要明白题目要求的其余函数的重要性,就算题目不需要提交这个函数,也得学会,理解它如何来的,否则到了要用的时候就没辙了,代码整体也调试不出了,这个问题上次老师也提过,但是没重视,以后要明白这个重要性。

2.PTA实验作业

2.1.题目1:

6-3是否合法出入栈操作

1474647-20190421145349995-1972949187.png

2.1.2代码截图

1474647-20190421145339411-889224975.png

2.1.3本题PTA提交列表说明。

1474647-20190421145529838-1125348587.png

1474647-20190421145547654-757803752.png

  • Q1:一开始的编译错误,是第一次使用容器,出栈的时候st.pop()括号里面还加了元素比如st.pop(1);
  • A1:这是对代码基本功能的不熟悉导致的,我百度后改正了,括号里面不需要元素,它只能出栈顶元素

  • Q2:后面一直都是15分,差一个点过不去,我尝试用了普通方法,还是15分。
    1474647-20190421145958564-398309084.png
    最后回归容器方法,还是过不去。
  • A2:问了同学,原来是没有考虑一开始就算非法的情况,如果操作符号是O;是第一个操作符,直接是对空栈操作,这一步少了,我加了if,在操作出栈前判断空栈,这也警示我,不管什么时候出栈就需要判断是否为空栈。

    1474647-20190421170909239-2018281255.png

2.2.题目2:

1474647-20190421150835212-1460178508.png

2.2.2代码截图

1474647-20190421150934471-1636151257.png

2.2.3本题PTA提交列表说明。

1474647-20190421150947431-113442390.png

  • Q1:前面的编译错误是因为,一开始没有想到课本的构造新的尾指针的办法,想用count直接代替,忽略了它和头指针的关系,导致两个量的关系不能够正确的衔接。
  • A1:翻看课本后,学习到 一种办法,构建新尾指针,通过count和首指针front的关系去搭建一个新的尾指针。

    1474647-20190421151249848-1750171620.png

  • Q2:后面的编译错误,看上去很简单,其实耗费了我很多时间。原因就是出在这里MaxSize,我以为这个还是宏定义,直接用 了,没有看清楚题目是在结构体里面定义的。
  • A2:所以我把MaxSize改成了Q->MaxSize;这也告诉,要注意这些细节。宏定义才可以直接引用。

2.3.题目3:

1474647-20190421151714565-109256556.png

2.3.1设计思路

1.初始化一个字符串和栈//字符串用于存需要判断的括号,栈用于匹配2.将字符串和栈作为形参传入函数3.进入函数,遍历字符串,所有属于右边括号的都进栈。   遍历到右括号的时候,用e存取栈顶,并栈顶元素匹配,如果匹配成功flag=1;并且把栈顶出栈,方便进行下一符号匹配  如果匹配不成功就输出栈顶e,返回0;4.最后空栈和flag匹配成功,就返回1;非空栈但是也匹配成功也属于不符合题意的,输出栈顶元素,返回0;5.主函数根据函数返回值输出yes/no

2.3.2代码截图

1474647-20190421152017642-281816329.png

1474647-20190421153715979-1569395802.png
1474647-20190421152557695-1976983847.png

2.3.3本题PTA提交列表说明。

1474647-20190421152607658-566875188.png

  • Q1:这个题目上手快,打完直接有分,但是有一个测试点过不去,就是所有符号都匹配成功了,但是后面栈里面还有元素,这也属于不符合题意的情况。我一开始后面没有针对这种情况,直接:
    1474647-20190421152748456-1591524257.png
  • A1:看了pta测试点,我明白了有这种情况的存在,所以我改成了这样:
    1474647-20190421155230221-807907808.png
    就算上面的程序循环完后,都成功了,但是到了这里只要检测到栈没有空,就进行else的语句输出栈顶元素,同时返回0;

2.4.题目4:

1474647-20190421155436594-1725933473.png

2.4.1设计思路

1.初始化队,定义一个数组,完成数据输入2.m>n情况输出3.报数号入队,便于后续操作4.将要输出的元素前面的元素存入数组 ,并且出队。让报数元素作为队首暴露出来5.队不空。输出队首元素,开始报数,6.把原来数组的元素接到队后面,开始下一次循环报数7.直到队中元素满足不了游戏,最后把存在数组中的元素输出

2.4.2代码截图

1474647-20190421160241445-1229064176.png

1474647-20190421160254899-1232033116.png
1474647-20190421160308994-1139549937.png

2.4.3本题PTA提交列表说明。

1474647-20190421155703384-1729188268.png

  • Q1:问题一把队和栈搞混了,取队首元素的时候用的q.top(),编译错误了。
  • A1:改成了q.front(),刚刚开始学习队和栈。使用这些容器的时候很容易搞错。要多注意

  • Q2:忘记了当队中的元素少的时候,执行循环出来少了最后的部分元素,因为被存到了数组中,出队了。这个时候需要把数组中的元素输出
  • A2:最后加了一个循环把数组里面的元素报出来,这样就可以完成游戏。

3、栈和队列上机考试

3.1 题目 (错的都是非常简单的地方)

1474647-20190421161736039-1288599383.png

代码截图

1474647-20190421161957771-815098083.png

1474647-20190421162013816-1512844974.png
1474647-20190421162035049-649089250.png

错误原因 :

这个题目我第一眼看到了非常熟悉,很快就敲完了。由于少了GetOp函数。无法调试,我提交总是8分

5分钟能解决的问题,耗费了我大半个小时。最终遗憾没有15分。最后回到宿舍,对比了练习的代码,完全一样的,看不出错误。我叫室友帮我对比2份代码,对比半天,终于找出来了:
1474647-20190421162545661-170156722.png
1474647-20190421162559995-2146279817.png
把输出样例2个感叹号搞混了,这里不需要加!,结果取掉!代码完全正确!

3.2题目

1474647-20190421163319096-746166675.png

代码截图

1474647-20190421163448856-324904932.png

1474647-20190421163508797-980402934.png

错误原因 :

这个舞伴问题的也是算比较熟悉的,所以我也打的很快。由于前面的第一题把我的时间都浪费了很多。我可能有点紧张,打的时候很快。结果敲完后,提交很多遍都编译错误,用编译器想试下,但是编译器一点运行就没反应。然后没有什么时间了就跳过了。课后,在看了下错误

  • 1:错误1:
    1474647-20190421164439029-1163613440.png
    rear打成了reat;
  • 2:错误2:
    1474647-20190421164517676-1680496019.png
    为空的情况下估计我是复制的题目给的初始定义函数里面的,忘记把后面的=0去掉。
  • 3:错误3:
    1474647-20190421164631564-1070418155.png
    dancer打成了dacer

 学习体会

这次的上机考试对我的意义挺大的,以前很少出现这种情况,我觉得犯小错误的原因终究还是自己没底气,慌了。总结起来还是平时的训练的时候没有真正深入骨髓。如果这个东西真的学到家了,当自己打出这样的错误的时候,脑子里应该会很直接的提醒自己。像以前一样的,我上机考试的时候明显的错误很容易看出来,这次可能就是平时的准备不到位。才导致这种情况的发生。还有就是编译调试,这次我完全脱离了编译调试,最主要的就是我练习的时候没有把题目不需要的函数去重视起来,今后这方面千万不能够马虎了,如果还不重视。下次考试又是不能调试的去打代码,很难正确。这次的考试对我能力的提高上可能没什么大的作用,由于前面容易题的消磨时间,没有去碰其余的题目,而且选择题都慌到没有保存,得了个0分。改正这种低级错误看上去很容易, 其实是需要积累的,为什么以前很少出现,因为以前学习更加掌握的深。准备也更加的好。结合这段时间栈的学习,就是由于我对知识掌握不够牢固,才会临阵慌乱。总之,说再多也没有用,也没有什么很大的感受可以说。一切照旧,该学的东西及时学习就行了。

转载于:https://www.cnblogs.com/zhouqb/p/10745191.html

你可能感兴趣的文章
Jmeter计数器的使用-转载
查看>>
【Android笔记】入门篇02:全屏设置和禁止横屏竖屏切换
查看>>
4. Median of Two Sorted Arrays
查看>>
Linux 虚拟机忘记root密码
查看>>
Kubernetes的本质
查看>>
PL/SQL developer 管理多套数据库
查看>>
黑马程序员-分类(category)
查看>>
新建PCH文件以及常用宏定义
查看>>
vue-cli多页面
查看>>
进程和线程
查看>>
iOS Foundation框架简介 -1.常用结构体的用法和输出
查看>>
java--迭代(三)foreach解析与字节码
查看>>
libevent reference Mannual I
查看>>
《mysql必知必会》读书笔记--触发器及管理事务处理
查看>>
《mysql必知必会》读书笔记--安全管理及数据库维护
查看>>
eclipse创建Maven父子结构Maven项目
查看>>
《C++ Primer》 Part IV(Object-Oriented and Generic Programming)
查看>>
Python 太糟糕了?开发者总结了 8 大原因
查看>>
“互联网+广交会”,AMT助广交会确立互联网时代竞争新优势
查看>>
配置ks.cfg实现自动安装过程
查看>>