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

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

1.本周学习总结(0--1分)

谈谈你对栈和队列结构的认识及学习体会。
     这章有认真预习,但做题还要依靠书,记不住,可能还需要多加练习,在PTA上的题只做了栈的,队列的做得很少。还有对顺序栈和顺序队理解,对链栈和链队的题好像没做过这类题型,所以对链式的会比较陌生。但我觉得它们的做法差不多。栈(后进先出表)和队列(先进先出表)都是在端点进行插入和删除操作,区别为队列的插入在队尾进行,删除在对头进行,而栈的插入和删除都在栈顶进行。顺序类型的栈和队列的删除不是正真的删除,链式的才是正真的删除。

2.PTA实验作业(6分)

本周要求挑4道题目写设计思路,调试过程。题目要求如下:

    (1) 栈,队列函数题目分别选择1题
    (2) 栈,队列编程题分别选择1题

原则上题目选择越难,代码量越大分值越高。

2.1.题目1:6-2 在一个数组中实现两个堆栈 (20 分)

2.1.1设计思路

函数题不要写设计思路。编程题用文字描述设计思路。(可不写伪代码)

2.1.2代码截图

1475633-20190421125422272-1117108042.png
1475633-20190421125433384-712469974.png

2.1.3本题PTA提交列表说明。

PTA提交列表中的每个错误详细说明为什么及如何解决。如图:

1475633-20190421122302765-1501276398.png

(1) Q1:输出超限(当第二个栈要入栈时,应是栈顶自减,由于之前做单栈习惯,对共享栈还不熟悉,写成对栈顶自增。)
    A1:经过调试后知道栈溢出,看书上共享栈的代码。
(2) Q2:运行超时(第二个栈出栈时,栈顶自减,应是栈顶自减)
   A2:重新阅读代码,对比书上的代码发现问题。
(3) Q3:答案错误(输出格式错误,没有换行符)
    A3:读题目,看样例。

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

2.2.1设计思路

函数题不要写设计思路。编程题用文字描述设计思路。(可不写伪代码)

定义个字符型的数组,初始化一个有数组和栈顶位置的空栈,一个存放右括号的字符型数组。遍历字符串,遇到左括号进栈,遇到右括号存到数组 rightop[ ] 里。一个循环遍历栈和数组 rightop[ ] 
比较栈顶的符号与数组 rightop[ ] 的符号对应的左括号是否相等,若不相等,flag等于1,输出栈顶和 no。循环出来后,有三种情况:(1)栈不空,flag等于1,输出栈顶和 no; (2)数组不空,flag等于1,输出 no; (3)flag不等于1,输出yes;

2.2.2代码截图

自己的做法
1475633-20190421140731115-1885761592.png
1475633-20190421140756081-2095693632.png
1475633-20190421140808474-92483230.png
1475633-20190421140825029-1113883247.png

老师在课上讲的做法
1475633-20190421141734088-213771597.png
1475633-20190421141750056-1825949902.png
1475633-20190421141803900-66376017.png

2.2.3本题PTA提交列表说明。

PTA提交列表中的每个错误详细说明为什么及如何解决。如图:

1475633-20190421141334287-41403777.png

(1) Q1:自己的做法在编译器上运行是对的,但提交到PTA上部分正确。
   A1:自己调试也没发现问题,最后叫几个同学帮忙看才发现问题(如果括号是一对的输入的话,不能正确的判断出是否配对成功,例:()[]{} )

(2) Q2:自己的做法因为存在上面的问题不知道怎么解决,所以采用老师上课讲的方法。

(3) Q3:编译错误(看不懂提示的错误)
A3:室友帮忙看的(提交时没有把编译器改成C++)

2.3.题目3:6-12 jmu-ds-舞伴问题

2.3.1设计思路

函数题不要写设计思路。编程题用文字描述设计思路。(可不写伪代码)

2.3.2代码截图

1475633-20190421231358204-726039589.png
1475633-20190421231404034-2117866161.png

2.3.3本题PTA提交列表说明。

PTA提交列表中的每个错误详细说明为什么及如何解决。如图:

1475633-20190421231504695-906987456.png

(1) Q1:答案错误(舞会的人名和性别没有存放到相应的队列中。)
    A1:两个结构体的混用,分别存放男女舞会的人的队列的使用,使用错了。根据编译器的提示,调整打出类型名,看什么时候编译器自动跳出后面的变量名。
(2) Q2:答案错误(输出没有配对成功参加舞会的人的性别和数量是错的)
    A2:在判断队列是否空时,两种情况的返回值错了。理解不透彻。自己找不出原因,同学帮忙看的。

2.4.题目4:题目名称

2.4.1设计思路

函数题不要写设计思路。编程题用文字描述设计思路。(可不写伪代码)

2.4.2代码截图

2.4.3本题PTA提交列表说明。

PTA提交列表中的每个错误详细说明为什么及如何解决。如图:

(1) Q1:
    A1:
(2) Q2:
    A2:

3.栈和队列上机考试(-3--3分)

错题及解决办法

截图错题代码,分析错误原因及后续要改进的地方。请至少列举2题。如果拿满分同学,这部分可不写,直接拿3分。
注意:分析错误原因及体会,注意讲代码错误。

3.1 题目一:6-2 另类循环队列

3.1.1 错题代码

1475633-20190421221812102-1383641236.png

错误原因:入队操作错了,因为没给尾指针,在对循环队列的对头自增时,没弄清楚,直接就对队列元素个数加一了,导致元素没有入队。把没有尾指针的入队操作理清楚。
体会:重新去看书上的循环队列的相关操作,要学会举一反三。

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

3.2.1 错误代码

1475633-20190421222947870-169503935.png
1475633-20190421223004810-2078665243.png

错误原因:在比较栈顶的括号和右括号是否相等时,粗心,比较的等式写错了可能还执念与之前自己的做法,对这个做法没有了解通透。导致错误。

体会: 多阅读学习其他同学的代码,也许其他同学的做法比较简单,而自己的做法比较笨拙。还有对自己做过的题要温故而知新。

转载于:https://www.cnblogs.com/Gejkdj/p/10743463.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值