绪论中的逻辑结构、存储结构介绍永远感觉吃不透


时间复杂度习题:

3:空间复杂度截至目前还没有考过,但其的定义这一段理解依旧偏差较为严重

建议多加把握这道题和相关考点,要考察应该会结合计组的递归栈和硬件一起考察吧

9:思维惯性,仿佛认为一定是求解时间复杂度,而实际上也可以是求解执行次数

算是提一个醒吧,审题上面尽可能少一些思维惯性

关于统考题:

最近几年变化的趋势就是越发变得注重计算和推理,相对往年难度略微提升

需要具体列出累加式然后再根据具体情况求解,这是要清楚的事

个人保留了一些统考题,以备下一次复习的时候进一步去思索和研究(应该会有新体会


绪论斐波那契数列的时间复杂度求解可以自底而上递归求解树,而不必自顶向下

这样不管是建树还是归纳法计算时间复杂度都会轻松和容易很多

也算是对递归类型计算时间复杂度的一个概括总结

或者说这类方法也可以拓展到一般求解,可以采用归纳法,如果特别难的情况之下


顺序表:

一般采用数组来实现(数组就是物理上面连续分配的一块空间,C语言中

唯一需要稍微回忆下的就是插入、删除的具体代码实现,别的书上划了相应重点

习题简要补充:

2:依旧是存储结构、逻辑结构、线性表一堆的问题

数组是计算机中分配的一块连续的内存空间,可以用于实现多种逻辑结构

顺序存储的涵盖范围很广,逻辑上相邻的物理上也相邻也可以指代满二叉树的存储方式

线性表是和树、集合等再度区分的数据结构…

好吧我是搞不清楚了,这边就从来没有搞懂过

本节习题有一些需要掌握的,算是统考比较频繁的考点:

6、7、8、9、11、15,基本都是操作和时间复杂度的考察关系,主要是熟练度问题

建议对各个操作在旁边都顺便写下来各种对应结构的时间复杂度来训练

13:提醒稍微注意下插入和删除的边界条件,插入可以是N+1个位置,删除只能N个

这个还是需要注意的,因为本次做题的时候是再度犯错,需要引起重视

注意下插入的序号是从一开始到末尾加一,删除的序号是从一开始到末尾

插入的话那个位置,例如I位置插入,是I这个位置空出来给用于插入

补:

涉及到要到某个位置进行插入、删除等操作的话,首先需要到这个位置上面去

如果是数组自然直接随机存取就到了,但链表不是,链表需要先找到该位,注意区别

最简单的解释就是第九题,不要默认链表已经到这个位置了,链表需要先找到该位置的


链表书上内容补充:

前插、前删操作基本可以不看,因为统考不会考察,仅仅做拓展而已

后面需要明白双链表的优点是什么即可

然后顺序表、链表的比较那边还是值得好好看的,其他没什么特别可以补充的

静态链表基本不考,之前考过一次也比较简单,知道用的是索引替代指针

链表:

后续的复习只需要列出对应的状态走一遍即可,这里留下对应的复习习题:

单链表:

带头结点、不带头结点分别情况下:(找前驱)

判空、求表长、查某位置值、位置插入删除(后插、后删)、头插法、尾插法、头删

查找、删除、插入平均长度计算

双链表:

带头结点、不带头结点分别情况之下:

一般位置的插入、删除(前插、后插、前删、后删)以及对应链条顺序打通、判空

在单链表的基础上就不必多增了,大部分操作是一样的

循环单链表:

六种情况:带头结点、不带头结点之下的头指针、尾指针自带否

六种情况分别的对应:头插、头删、尾插、尾删各自代码和时间复杂度

循环双链表不需要复习

静态链表清楚是个什么东西就行,截至目前还没有考过


习题补充分析:

1:链式存储一般情况下更灵活于表达逻辑结构,绝大多数数据结构均基于链式

链式和顺序有一个考点:同样是O(n)的情况下,链式的删除、插入要远好于顺序的

3:审题,结点内必然连续,结点间不一定连续

7:排序的最低是nlog2n,这个是之前还没有复习到的内容,稍微记一下

17:这种题现在应该要做到能够迅速反应,但凡是后面语句用到了p->Next类型的

按照考试给定的代码去分析就行了,它给什么分析什么,自己写是很难和它同步答案的

必须是要在这个指针修改之后,简单来说就是要能够一眼看出来

PS:一般给定的链表都是默认带头指针不带头结点类型的链表

其他补充说明:

本节主要就是考察一个熟练度问题,总体没有太多可以分析的,留的作业:

10、17、23、24、26、28、29,其他酌情增量复习即可,这些是略麻烦些的题目

只要在上面给定的复习基础上面充分推导这些都不会是问题