数据结构 第2章总结

第二章正式开始学习数据结构这门课,这个难度真的太不友好了,即便第二章线性表是整本教程比较基础的部分,但是学习起来真的会比单纯打代码要复杂很多。我们考虑得更多不是怎么用C++去写出来我需要的函数了,而是更注重于对这种数据结构更底层的理解,并且在此基础上去搭建算法。

接下来是分小节回顾:

2.1线性表的定义和特点:从定义来看很容易让人联想到上个学期的数组和链表

2.2案例引入:结合线性表的特点来分析一元多项式和稀疏多项式的运算(这里用的主要是文字描述,还没有具体到代码)

2.3线性表的类型定义:基于线性表的定义与特性,给出了包括访问、插入、删除等基本操作(注意看p22下面的说明,以后给出其他数据结构时也可以参考这四点)

2.4线性表的顺序表示和实现:这里很自然的就跟数组联系起来啦,,逻辑上相邻的数据元素,其物理次序也是相邻的,可以实现随机存取。定义结构体时可以用书本上的指针(需要开辟空间),也可以用mooc上的数组(需要长度确定)

顺序表的查找时间复杂度只有O(1),但是在删除和插入时需要O(1)(注意看p29中间关于顺序表的说明)

*2.5线性表的链式表示和实现:链表由结点串联而成,结点又包括数据域和指针域。分析单链表、循环链表、双向链表在定义和基本操作之间的不同,有无头尾节点也会对后续操作的实现产生影响(所以重点看这一部分的课本 p29-p40)

2.6顺序表和链表的比较:空间:顺序表储存密度大,所以在长度已知且比较小的时候一般用顺序表 时间:顺序表可以实现随机存取,但在插入删除操作时间复杂度高于链式表(频繁需要此类操作时首选链式表)

2.7线性表的应用:顺序表/链式表的有序表合并(定义了中间结点一定要及时释放)

*2.8案例分析与实现:这里可以结合2.2一起看,2.2将思路2.8讲实现,每一行代码都需要认真琢磨,以后可能用得很多的

*2.9小结:看书看书看书

以前没有想象过数据结构有多难,现在算是领悟到了一点点,so,一定要多看书代码一定要写清楚注释!

//*:需要回归课本复习

猜你喜欢

转载自www.cnblogs.com/cmlearning/p/12683504.html