#这篇文章只作为个人的读书笔记,内容均来自书本,请勿转载
关键:1、线性表是一个序列
2、线性表是有限的
线性表抽象数据类型:
线性表的顺序储存结构:用一段地址连续的储存单元依次存储线性表的数据元素
描述顺序储存结构:1、储存空间的起始位置、
2、线性表的最大储存容量
3、线性表的长度
几种操作的具体实现:
插入操作:1、如果插入的位置不合理,抛出异常
2、如果线性表的长度大于等于数组长度,抛出异常或动态增加容量
3、从最后一个元素向前遍历i个位置,分别将他们向后移动一个位置
4、插入
5、表长加一
删除操作:1、位置不合理抛出异常
2、取出删除元素
3、从删除位置向后遍历,都向前移动一个位置
4、表长减一
*时间复杂度:最好情况1,既O(1)最坏情况n,既O(n)
根据概率原理,平均次数为(n-1)/2,既O(n)
线性表的优缺点:
线性表的链式存储结构:
头指针和头结点:
线性表链式储存结构代码描述:
几种操作的具体实现:
单链表的读取:
1、声明一个节点p指向链表的第一个节点 ,初始化j从1开始
2、当 j<i 时,就遍历链表
3、若到链表尾p为空,说明I不存在
4、否则查找成功,返回节点P的数据
单链表的插入:
单链表的删除:
1、声明一节点P指向链表的第一个节点,初始化j从1开始。
算法复杂度分析:
单链表的插入和删除都是O(n),这样和线性表相比是没有什么优势的,但是对于插入删除多个数据,单链表只需在第一次O(n),后面的数据都是O(1)了。
所以:对于插入或删除数据越频繁的操作,单链表的优势就越明显。
单链表的整表创建:
单链表的整表删除:
单链表结构与顺序存储结构优缺点:
静态链表:
循环链表:
双向链表: