一、学习小结:
这一章主要是介绍线性表的两种的存储结构:顺序存储结构(顺序表)和链式存储结构(链表),前者可通过数组来实现,看着亲切,学起来也容易些;后者与指针相关,但比较不容易理解。下图为思维导图:
顺序表和链表的六个基本操作:定义、创建、初始化、查找、删除、插入,还有相关的时间复杂度的分析计算,注意是否带头结点、是否需要回传等问题。
注意:在长度为n的顺序表中查找第x个元素,随机访问,T(n) = O(1);查找值为x的元素,需要分析查找和比较的时间复杂度,T(n) = O(n)。
二、学习难点
1、一开始对“头指针、头结点、首元结点”以及“指针变量、结点变量”的概念混乱,时长搞错,后来看老师的视频后跟着画图,化抽象为具体,就不容易搞混啦。
2、动手写代码的时候总会出现非正常退出的情况,调试后才发现是老师强调过的问题,如:
3、还有经常遗忘的Destory函数,老是忘记释放new回来的空间,下次一定不能再忘啦!!!
4、时间复杂度有时还是会算错,这个看来要多找些题来计算。
三、小组讨论
小组讨论的形式挺好的,大家一起解决同一个任务,一起分工打码,一起找bug;
第一次小组讨论进行得比较顺利,第二次因为对两个结构体的关系理解得不透彻,代码写得十分曲折。
在这里要感谢一下佩佩、鸾怡和秋哥的帮助,我终于知道怎么把这两个类型定义关联起来了!
四、讨论点评
讨论题基本都会自己先写出来,再去看其他同学的解法和思路,有些还挺有意思的,有时能看到和自己解法相似的答案,还能发现一些测试盲点。
不过上上次的讨论二,打包头尾指针的那个,我真的一脸迷茫,不会打包,因为觉得头指针作用不大,后来在梓盈的帮助下我才理解了打包是为了方便其他操作的作用,而非局限于当前操作。