第二章学习总结
本章我学习了有关线性表的数据结构:它可以用顺序存取结构来实现也可以用链式存取结构来实现,具体到C++编程语言里就是数组和链表。
它们各有优缺点:
顺序存取结构:逻辑上相连,物理上也相连。优点就是随机存取、查找表中元素十分方便,但缺点就是插入或者删除操作需要移动大量的元素。
链式存储结构:逻辑上相连但物理上不完全相连。优缺点与顺序存储结构刚好相反。
接下来我想起讲讲自己在学习本章知识的感想。
第一,不能单一参考一种资料,理解一个抽象的东西最好的方法,就是参考不同的书本,看不同版本的定义。一开始,我看到《数据结构》对链表的构建,我很懵逼,甚至很多名词的意思都不懂。然后我就把上学期的课本《C++程序设计教程》内有关链表的概念,链表常用算法(创建无序链表、遍历链表、删除插入释放链表),有关typedef的概念以及使用。然后再结合CSDN上的一些代码(https://blog.csdn.net/qq_33413868/article/details/80781492)对链表的使用进行深一步的了解。
第二,概念容易理解,但是践行很困难。虽然书上的概念看懂了,但有些时候很难去将抽象的概念运用到具体的问题中。比如作业中的判断选择题,有一些不是很会,有一些答案不是很确定,让我觉得做完题心里还是忐忑不安。于是做完之后对不确定的答案上网搜索答案,然后想了想有些题目错在了哪里,在CSDN和博客园上找的,题目比较散,就不一一标注网址了。
第三,善于学习别人代码的优秀之处。做实践题的时候,一开始是打算建立两个数组分别储存两个集合,然后将每个集合中的每个元素一一比较,最后将相同的元素放入第三个集合中。中间出现不仅一些关于C++语言语法错误,更重要的是方法不够好,以空间换取时间,出现超时。询问了一下同学,然后才会想起老师说过的sort()方法(当时上课还不太理解),根据这个思路把两个数组排序,相等再放入第三个数组。但这个方法还是超时。最终经过黄嘉骏同学在群里发的代码的启发,我就再进行修改,最后将b数组接到a数组后面,让a数组从前往后两两比较,将相同的放入第三个数组中。
第四,算对自己的一些总结吧。感觉自己可能因为上学期没学好C++,又不常询问他人,解题没思路。对学习编程有了恐惧感,害怕打代码,很多时候总是害怕写作业,但越不写就越不熟,越到后面学得越复杂就更无从下手。所以在往后的学习中,要边学边做边巩固,作业要随着教学进度一点点完成,遇到不懂的才能有更多时间查资料,而不是等到最后才堆到一起做,这样做作业才不会无从下手。