开发工具与关键技术:
作者:木有窝的鸟~小通
撰写时间:2020年5月15日
线性表:
1、线性表是复合数据类型,这种类型的线性表称为复合线性表。
2、而线性表的主要特征如下:
(1).在非空的线性表,有且仅有一个开始结点a1,它内有直接前趋,而仅有一个直接后继a2.
(2).有且仅有一个终端结点an,它没有直接后继,而仅有一个直接前趋an-1;
(3).其余的内部结点ai(2≦i≧n-1)都有且仅有一个直接前趋ai-1和一个直接后继ai+1。
3、线性表的基本运算:
求表长——求线性表中元素个数
遍历——从左到右(或从右到左)扫描(或读取)表中元素
按编号查找——找出表中第i个元素
按特征查找——按某个特定值查找线性表
插入——在第i个位置上(即原第i个元素前)插入一个新元素
删除——删除原表中的第i个元素
排序——按元素某特征值的递增(或递减)排序,重排表中各元素
4、线性表有两种存储方式
一种顺序的形式
一种链序的形式
5、顺序表
顺序表是很守规矩的,每个元素都前后有序、整整齐齐地站在一起。
顺序表的基本特点是:元素按顺序存放地址连接。
1.空间连续;
2.支持随机访问;
3.在中间或前面部分的插入删除时间复杂度为O(n),增容的代价比较大;
4.顺序表的优点:更适合频繁访问第n个元素的场景;
(1)根据下标随机访问时间复杂度为O(1);
(2)不会造成内存碎片化;
(3)缓存更优化;
(4)代码简单;
6、链表
1、定义:链表不是地址连续的空间,他的插入和删除不需要移动元素,它看到内存有空余地址就可以毫无顾忌地挤进去,所以我们叫它“调皮的链表”。(链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。)
2、线性表的链式存储表示的特点:是用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可以是不连续的)。因此,为了表示每个数据元素 与其直接后继数据元素 之间的逻辑关系,对数据元素 来说,除了存储其本身的信息之外,还需存储一个指示其直接后继的信息(即直接后继的存储位置)。
3、单链表的结构
单链表中构成链表的结点只有一个指向直接后继结点的指针域。其结构特点:逻辑上相邻的数据元素在物理上不一定相邻。
4、实现单链表的插入和删除操作:
(1)单链表插入
·找到位置P(ai-1)
·生成新结点x,数据域赋值
·新结点指针域指向ai(ai的地址存放在ai-1的指针域)
·ai-1 的指针域指向新结点x
插入前:
插入后:
(2)删除单链表结点
·找到要删除的结点前一个结点x(原因是删除结点的位置在前一个结点的指针域)
·把xànext指向ai的下一个结点(把ai从链上摘除)
·释放ai空间
删除前:
删除后:
(3)删除单链表头元素
·保存头元素的指针域(即头元素的后继节点的首地址)
·头结点指针域指向头元素的后继节点