持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第16天,点击查看活动详情
线性表
线性表的定义
线性表是具有相同数据类型的若干数据元素的有限序列,除了第一个元素之外每一个元素都有一个唯一的直接前驱,除了最后一个元素外每个元素都有一个唯一的直接后继。
线性表的特点
- 1)表中元素的个数有限
- 2)表中元素具有逻辑上的顺序性
- 3)每个元素都是数据元素,每个元素都是单个元素
- 4)表中元素的数据类型都相同
- 5)表示元素具有抽象性,即仅讨论元素间的逻辑关系,不考虑元素九九表示什么内容
线性表的基本操作
- InitList(&L):初始化表。构造一个空的线性表。
- Length(L):求表长。返回线性表L的长度,即L中数据元素的个数。
- LocateElem(L, e):按值查找操作。在表L中查找具有给定关键字值的元素。
- GetElem(L, i):按位查找操作。获取表L中第1个位置的元素的值。
- ListInsert(&L, i, e):插入操作。在表L中第i个位置上插入指定元素e。
- ListDelete(&L, i, &e):删除操作。删除表L中第i个位置的元素,并用e返回删除元素的值。
- PrintList(L):输出操作。按前后顺序输出线性表L的所有元素值。
- Empty(L):判空操作。若L为空表,则返回true,否则返回false。
- DestroyList(&L):销毁操作。销毁线性表,并释放线性表L所占的内存空间。
顺序表
顺序表是线性表的顺序表示,使用一组地址连续的存储单元依次存储数据元素。
顺序表的特点是逻辑顺序与物理顺序相同,可以随机访问;存储密度高,每个结点只存储数据元素;顺序表逻辑相邻的元素物理上也相邻,所以插入和删除操作需要大量的移动元素。
链表
链表是线性表的链式存储,为了表示数据元素之间的关系,每个结点除了存储数据元素之外还存放一个指向后继结点的指针。
使用单链表可以解决顺序表需要大量连续存储单元的缺点,但是又带来了浪费存储空间的特点。
单链表分为带头结点和不带头结点的两种。不带头结点的链表第一个结点的位置就是头指针,带头结点的链表第一个结点指向后边一个相邻元素的地址是头指针。
头结点和头指针的区别
- 1)首先头结点是结点,头指针是指针,结点对应的是数据,头指针指向的是地址。
- 2)头指针指向的是链表的第一个结点,头结点通常不存储信息,他的下一结点是链表第一个结点。