第二章 线性表
第二章 线性表
2.1线性表的定义和基本操作
2.1.1线性表的定义
线性表是具有相同数据类型的n个数据元素的有限序列
线性表特点:表中元素的个数有限、具有逻辑上的顺序性、都是数据元素、数据类型相同(占用空间大小相同)、具有抽象性(即不考虑元素究竟是什么内容,仅讨论元素间的逻辑关系)
2.1.2线性表的基本操作(略)
2.2线性表的顺序表示
2.2.1顺序表的定义
顺序表:线性表的顺序存储,是用一组地址连续的存储单元依次存储线性表中的数据元素,所以逻辑顺序与其存储的物理顺序相同。每一个数据元素的存储位置都和顺序表的起始位置相差一个和该数据元素的位序成正比的常数,因此,顺序表的任意一个数据元素都可以随机存取。(编程语言常用数组表示)
一维数组可以是静态分配,或者动态分配。
静态分配:数组大小空间事先已经固定,一旦空间占满则会溢出。
动态分配:一旦数据空间占满,就另外开辟一块更大的存储空间,将原表的元素全部拷贝到新空间。
- 优点:1.随机访问 2.存储密度高
- 缺点:1.元素的插入和输出需要移动大量的元素 2.顺序存储分配需要一段连续的存储空间,不够灵活
2.2.2顺序表上基本操作的实现
顺序表的初始化、插入、删除、按值查找
2.3线性表的链式表示
2.3.1单链表的定义
单链表:线性表的链式存储,是通过一组任意的存储单元来存储线性表中的数据元素。(解决了顺序表需要大量连续存储单元的缺点,由于单链表的元素离散地分布在存储空间中,因此是非随机存取的存储结构,得根据指针依次查找)
头结点和头指针的关系:不管带不带头结点,头指针都始终指向链表的第一个结点,而头结点是带头结点的链表中的第一个结点,结点内通常不存储信息。
优点:引入头结点后,空表和非空表的处理就得到了统一。
2.3.2单链表上基本操作的实现
单链表的初始化、求表长操作、按序号查找结点、按值查找表结点、插入结点操作、删除结点操作、采用头插法建立单链表、采用尾插法建立单链表
2.3.3双链表
2.3.4循环链表
2.3.5静态链表
2.3.6顺序表和链表的比较
- 存取(读/写)方式
- 逻辑结构和物理结构
- 查找、插入和删除操作
- 空间分配

浙公网安备 33010602011771号