数据结构-线性表
线性表的定义和基本操作
线性表是具有相同数据类型的n个数据元素的有限序列,n为表长。
- 表中元素个数有限
- 元素有先后顺序
- 元素类型相同,意味元素占有相同大小的存储空间
线性表是一种逻辑结构,表示元素之间一对一的相邻关系。顺序表和链表是指存储结构,勿混淆
1 | InitList(&L) // 初始化表 |
线性表的顺序表示
顺序表的顺序存储又称为顺序表
1 |
|
1 |
|
顺序表的基本操作实现
插入操作
在顺序表的第i个元素插入新元素e O(n)
删除操作
删除顺序表的第i个元素并用变量e返会 O(n)
按值查找
查找第一个值位e的元素并返回位序 O(n)
线性表的链式表示
单链表的定义
线性表的链式存储又称单链表
1 | typedef struct LNode{ |
带头结点的单链表
- 不管带不带头结点,头指针都指向链表的第一个结点
头结点的优点 - 由于第一个数据结点的位置被存放在头结点的指针域中,因此在链表的第一个位置上的操收和在表的其他位置上的操作一致无须讲行特殊处理。
- 无论链表是否为空,其头指针都指向头结点的非空指针(空表中头结点的指针域为空),因此空表和非空表的处理也就得到了统一。
单链表上操作的实现
头插法建立单链表 O(n)
尾插法 O(n)

按序号查找结点值 O(n)
按值查找结点 O(n)
插入结点

查找到元素的插入位置的时间复杂度 O(n) 实际插入是O(1)
删除结点操作

双链表
1 | typedef struct DNode{ |
插入操作

删除操作



