写在前面

大二上学期开设了数据结构这门课程,听老师说这门课程不太好学

对于我这种脑子不太好使的来说,更要多多付出

老师上课会雨课堂出一些练习题,决定把易错,易混的题目和知识点记录下来,便于期末复习什么的加深印象~

另外对于遇到的有价值的题也会记录,巩固知识,持续更新~

虽然我走得很慢,但我仍在前进!


目录

  • 第一章-绪论
  • 第二章-线性表
  • 顺序存储
  • 链式存储
  • 第三章-栈和队列
  • 第五章-数组和广义表
  • 第六章-树
  • 第七章-图
  • 第九章-查找

开始


第一章-绪论

数据结构课堂篇_C语言版_题记、小结_数据结构

数据结构课堂篇_C语言版_题记、小结_数组_02

数据结构课堂篇_C语言版_题记、小结_队列_03


数据结构课堂篇_C语言版_题记、小结_队列_04

答案:C

  • 逻辑结构:集合、线性结构、树形结构、图形或网状结构
    注意:逻辑结构和计算机、语言不相干
    存储结构是 数据 逻辑结构 用 计算机语言的 实现
  • 存储结构:顺序存储结构、链式存储结构、索引存储、散列存储(Hash表)

注意:

  1. 逻辑结构中的线性结构有包括:线性表、栈、队列、串、数组等
  2. 循环队列是顺序存储结构。链式存储没有大小,没有循环之说,所以循环队列默认指顺序存储结构,如果说是队列(统称)应该也是与存储结构无关的术语。
  3. 一种数据的逻辑结构,可以用多种存储结构来实现
    如上面2图
  4. 只要带有‘顺序’、‘链式’等字样的就要注意 是否与存储结构有关

数据结构课堂篇_C语言版_题记、小结_线性表_05

第二章-线性表

线性表-顺序存储结构

关于课本上的一些算法,已经基本实现于往期实验博客:

数据结构实验1_C语言_输入集合A和B求并集、交集、差集(while + switch + 功能函数))

数据结构实验2_C语言_基于顺序表的非递减有序表的合并、线性表元素的增、删、改、查(while +switch + 功能函数)

数据结构课堂篇_C语言版_题记、小结_数组_06

数据结构课堂篇_C语言版_题记、小结_队列_07

数据结构课堂篇_C语言版_题记、小结_线性表_08


数据结构课堂篇_C语言版_题记、小结_线性表_09


数据结构课堂篇_C语言版_题记、小结_数组_10


数据结构课堂篇_C语言版_题记、小结_栈_11

线性表-链式存储结构

数据结构课堂篇_C语言版_题记、小结_数据结构_12


数据结构课堂篇_C语言版_题记、小结_数据结构_13

我认为选B,因为就是下一个元素的下标,静态数组—》类链表

数据结构课堂篇_C语言版_题记、小结_数据结构_14

数据结构课堂篇_C语言版_题记、小结_栈_15


数据结构课堂篇_C语言版_题记、小结_线性表_16


数据结构课堂篇_C语言版_题记、小结_线性表_17

  • B:虽然可以直接获取第一个元素,但是想要 获得 最后一个元素,需要遍历整个链表
  • D:可以直接得到最后一个元素,因为是循环链表,想要得到第一个元素只需要在遍历一个元素就可以
  • 对于双链表 的优势,可以看下图

数据结构课堂篇_C语言版_题记、小结_数组_18


不能出现 大 小 中 的循序

数据结构课堂篇_C语言版_题记、小结_栈_19

循环链表是 尾结点的next指向头结点 (或者第一个节点)

数据结构课堂篇_C语言版_题记、小结_数据结构_20

即可以理解为 是不是需要遍历

第三章-栈和队列

3.1 栈

数据结构课堂篇_C语言版_题记、小结_数据结构_21

数据结构课堂篇_C语言版_题记、小结_栈_22

数据结构课堂篇_C语言版_题记、小结_数据结构_23

数据结构课堂篇_C语言版_题记、小结_线性表_24

需要注意C和E

C是当为n个元素,再!做进栈操作,然后就上溢

E情况就类似上面的图(默认剩余预留一个空间的时候为满)

数据结构课堂篇_C语言版_题记、小结_队列_25


数据结构课堂篇_C语言版_题记、小结_栈_26


数据结构课堂篇_C语言版_题记、小结_线性表_27


数据结构课堂篇_C语言版_题记、小结_栈_28

3.2队列

数据结构课堂篇_C语言版_题记、小结_数组_29


针对循环队列

数据结构课堂篇_C语言版_题记、小结_栈_30

第四章-串

数据结构课堂篇_C语言版_题记、小结_线性表_31

数据结构课堂篇_C语言版_题记、小结_数组_32

第五章-数组和广义表

数据结构课堂篇_C语言版_题记、小结_线性表_33

分析:

对于n行n列的下三角矩阵,元素个数为 1 + 2 + 3 + ... + n-1 + n = n(n + 1) / 2

存储数组的下标 和 元素 在矩阵中的位置 之间有一些关系:

对于处于i 行 j 列的元素a

上面共有i - 1行,上面行元素总数为 (i - 1)(i - 1 + 1) / 2i (i - 1) / 2

然后在加上此行的 前面的j

i (i - 1) / 2 + j


数据结构课堂篇_C语言版_题记、小结_数据结构_34

数据结构课堂篇_C语言版_题记、小结_数据结构_35


数据结构课堂篇_C语言版_题记、小结_队列_36


数据结构课堂篇_C语言版_题记、小结_栈_37


数据结构课堂篇_C语言版_题记、小结_栈_38


数据结构课堂篇_C语言版_题记、小结_线性表_39

数据结构课堂篇_C语言版_题记、小结_数组_40


数据结构课堂篇_C语言版_题记、小结_数据结构_41


数据结构课堂篇_C语言版_题记、小结_线性表_42


数据结构课堂篇_C语言版_题记、小结_线性表_43


数据结构课堂篇_C语言版_题记、小结_栈_44

数据结构课堂篇_C语言版_题记、小结_队列_45


数据结构课堂篇_C语言版_题记、小结_队列_46

第六章-树

数据结构课堂篇_C语言版_题记、小结_数组_47


数据结构课堂篇_C语言版_题记、小结_队列_48


数据结构课堂篇_C语言版_题记、小结_数据结构_49


数据结构课堂篇_C语言版_题记、小结_数组_50


递归的输出每个元素都需要进栈

数据结构课堂篇_C语言版_题记、小结_队列_51


数据结构课堂篇_C语言版_题记、小结_队列_52


数据结构课堂篇_C语言版_题记、小结_数组_53

数据结构课堂篇_C语言版_题记、小结_队列_54

数据结构课堂篇_C语言版_题记、小结_线性表_55

数据结构课堂篇_C语言版_题记、小结_数据结构_56

  • 法1

可根据最后一个节点 为 1001 ,为奇数,推出 其父节点为500 (2 * 500 + 1 = 1001)

得出度 为 2 的 最后一个结点为 500

所以度为2的结点 个数为 500—》叶子节点为 501

  • 法2

(总结点数 - 一个根节点 ) / 2 ,(1001 - 1)/ 2 = 500,看看有多少对,就有多少个 度 为 2 的节点,即500

数据结构课堂篇_C语言版_题记、小结_栈_57


数据结构课堂篇_C语言版_题记、小结_数组_58

数据结构课堂篇_C语言版_题记、小结_线性表_59

数据结构课堂篇_C语言版_题记、小结_数据结构_60

第七章-图

数据结构课堂篇_C语言版_题记、小结_队列_61

数据结构课堂篇_C语言版_题记、小结_线性表_62


一条边对应两个顶点

数据结构课堂篇_C语言版_题记、小结_栈_63

7.1图的生成树

数据结构课堂篇_C语言版_题记、小结_线性表_64

可能存在 权值 相等的情况

数据结构课堂篇_C语言版_题记、小结_栈_65

数据结构课堂篇_C语言版_题记、小结_线性表_66

7.2邻接矩阵和邻接表

数据结构课堂篇_C语言版_题记、小结_线性表_67


数据结构课堂篇_C语言版_题记、小结_线性表_68


数据结构课堂篇_C语言版_题记、小结_数据结构_69


数据结构课堂篇_C语言版_题记、小结_数组_70


数据结构课堂篇_C语言版_题记、小结_队列_71


数据结构课堂篇_C语言版_题记、小结_数组_72

数据结构课堂篇_C语言版_题记、小结_线性表_73

注意是 任何情况

数据结构课堂篇_C语言版_题记、小结_队列_74


数据结构课堂篇_C语言版_题记、小结_数组_75

第九章-查找

数据结构课堂篇_C语言版_题记、小结_栈_76


数据结构课堂篇_C语言版_题记、小结_栈_77


数据结构课堂篇_C语言版_题记、小结_线性表_78


数据结构课堂篇_C语言版_题记、小结_队列_79


数据结构课堂篇_C语言版_题记、小结_栈_80


数据结构课堂篇_C语言版_题记、小结_队列_81


慢慢画出来即可

数据结构课堂篇_C语言版_题记、小结_队列_82


数据结构课堂篇_C语言版_题记、小结_栈_83

数据结构课堂篇_C语言版_题记、小结_数组_84


数据结构课堂篇_C语言版_题记、小结_数据结构_85


数据结构课堂篇_C语言版_题记、小结_数据结构_86


数据结构课堂篇_C语言版_题记、小结_栈_87


数据结构课堂篇_C语言版_题记、小结_栈_88

数据结构课堂篇_C语言版_题记、小结_数据结构_89


关于课本上的一些算法实现稍后会更新…