数据结构:第三章学习小结

        本章学习了栈和队列,可以说是在第二章上的延伸,并且我们在上学期上计算机科学概论的时候学过有关知识,所以理论知识并不是很难,但没想到这一周的作业题及讨论题却都不简单。我觉得学习第三章可以帮助我们更好地运用顺序表及链表,并优化我们的代码。在做第三章作业的编程题即括号分配题时,一开始想到的代码根本用不到有关栈的知识,而且还想到了用他们的ASCII码去做,但是那样十分复杂,于是一开始会有很多疑问,如果让输入的全部入栈,然后出栈的时候计算括号数目,如果是单数就一定不匹配,但如果是双数,再去看括号类型是否相同,但是如果是按这个思路的话,用不用栈关系不大,甚至不用栈来存储输出的话会更方便,但问题又来了,但既然是本章作业肯定是有关系的,直到后来去看了老师在mooc上的代码视频,才有了思路,而这种思路及其巧妙,但我觉得用switch else的话会比if更简单一些。

        在本周的小组讨论题中,在互评时看到有的组只写了main函数,而没有将代码分成几个函数写就想起来我上学期的时候打的代码,也都是不常用函数的,主要是没掌握好要领导致的。上学期一开始时总在&符号上琢磨,并搞不懂有无void的调用方法,但好在在几次测验中逐渐的发现了自己的错误并改正那个过来。这周的讨论也是我们小组一起进行的第三次讨论,我们的默契也越来越足,配合的也越来越好。在讨论问题的时候,我们用了链表的方式,先将第一次的输入,第二次输入时按照前面的编号将后面的积分分配到对应的编号下。但在输出查找的时候我们却遇到了问题:每一次的寻找都是从头开始遍历整个链表的,这是我们在这次任务中最纠结的一件事情。如果将前面第一次的输入按照首字母排序的同时也将第三次的输入按首字母存储,第二次输入积分时就要从头遍历,同样不会节省时间。但如果按编号升序存储一个表,再按姓名首字母升序排列存储到另一个表,就节省了时间,但空间复杂度增加,所以最后还算是没有找到一个创新的方法。

        在这章中我有一个非常喜欢的题,就是老师在课上出的1到10按顺序入栈,输出顺序分别是....的那道题,我喜欢这道题不止是因为他虽然简单我答错了,导致我在反思自己为什么这么蠢的时候他给我留下了很深的印象,更因为我觉得他很奇妙,因为这道题我更好地了解了栈的模式,而且我相信因为这道题,我对栈的记忆也会停留的更久!

        在后面的学习中希望能协调时间,在学习新知识的同时,也要回顾前几章的知识,不然随着时间的推移,我最喜欢记得最久的题也会弃我而去的。

posted on 2020-04-25 15:46  侯艺雯  阅读(166)  评论(0编辑  收藏  举报