嵌入式学习(数据结构:链表)
程序 = 数据结构 + 算法
数据结构 :是相互之间存在一种或多种特定关系的数据元素的集合。通常有以下4类基本逻辑结构。
1、集合,结构中的数据元素之间除了同属于一个集合的关系外,别无其他关系;
2、线性结构,结构中的数据元素之间存在一个对一个的关系;
3、树形结构,结构中的元素之间存在一个对多个的关系;
4、图状结构或网状结构,结构中的数据元素之间存在多个对多个的关系。
存储结构也有四种:1、顺序结构,2、链式结构,3、索引结构,4、散列结构
空间复杂度
引入空间复杂度的概念:空间复杂度作为算法所需存储空间的度量,记作:S(n)=O(f(n))
其中n nn为问题大小的规模。算法要占据的空间包括,算法本身要占据的空间,输入/输出,指令,常数,变量等,算法在执行时所需的辅助空间。
顺序表的优缺点
优点:1、存储密度大;2、可以随机存取表中任一元素。
缺点:1、在插入、删除某一元素时,需要移动大量其他元素;2、浪费大量存储空间;3、属于静态存储形式,数据元素的个数不能够自由扩充。
单链表的结构
单链表是由一连串的结构(称为结点)组成的,其中每个结点都包含指向下一个结点的指针,单链表最后一个结点的指针为空。
头指针总是指向链表的第一个结点,如果整个链表为空(即不包含任何结点),则将头指针置为NULL。
为了操作方便,往往在首元结点前再增加一个结点,称之为头结点,头结点不存储元素。
头指针指向头结点,头结点的指针域指向首元结点,我们称这种单链表为带头结点的单链表。链表为空时,头结点的指针域为空。