其实对于线性表,我们并不陌生.学习英语之前,我们最先开始学习的就是26给 英文字母,由这26个字母组成的字母表就是一个线性表.扑克我们都玩过,一副 扑克牌的点数也是一个线性表.在我们生活总,无处不存在着线性表.
线性结构是最简单且最广泛的一种数据结构,其基本特点是结构中的各个元素 之间满足线性关系.用数学语言来解释就线性关系就是数据元素之间存在着一对一的关系.那么线性表的定义为:由称为元素的数据项组成的一种有限且有序的序列.
1.结点
线性表中每一个元素都称为一个结点.对于一个非空线性表,a0是第一个结 点,an-1是线性表的最后一个结点.以为a2为例,a1是a2的前驱结点,a3是a2的后继结点.而且第一个结点和最后一个结点分别是没有前驱结点和后继结点的,如下图所示.
2.存储
(1)顺序存储
顺序存储是最简单的存储方式,通常是用一个数组,从数组的第一个元素开始,将线性表的结点一次存储在数组中,即线性表的第i个结点存储在数组的第i个元 素中,用数组元素的顺序存储来体现线性表中结点的先后次序关系.
(2) 链式存储
链式存储是用链表存储线性表,最简单的是用单向链表,即从链表的第一个结点 开始,将线性表的结点依次存储在链表的各结点中国.链表的每个结点不断要存 储线性表结点的信息,还要用一个域存储其后继结点的指针.单向链表通过链接 指针来体现线性表中结点的先后次序关系.
3.操作
(1)查找
基本思想是:从表头顺序扫描至表尾,将扫描到的结点关键字与给定值K比较。若当前结点关键字与K相等,则查找成功;若扫描结束后,仍未找到与等于K的结点关键字,则查找失败。
线性表查找的方法主要是有:顺序查找,二分查找,分块查找,散列查找.
(2) 顺序表插入
(3)链表插入
1)找到ai-1存储位置p,生成一个数据域为x的新结点*s .
2)令结点*p的指针域指向新结点 .
3)新结点的指针域指向结点ai.
具体步骤下图所示:
(4)顺序表删除
直接从要删除的后一个开始,所有元素向前移动一个位置即可。如下图所示:
(5)链表删除
1)找到ai-1的存储位置p(因为在单链表中结点ai的存储地址是在其直接前趋结点ai-1的指针域next中)
2)令p->next指向ai的直接后继结点(即把ai从链上摘下)
3)释放结点ai的空间,将其归还给"存储池"。
具体步骤如下图所示:
以上链表的插入和删除都是以单向链表为例的,而双链表和循环链表的插入和删除也是一样的,大家可以自己动手.
我们曾经学过并且使用过数据库表,Excel 表格对数据进行查找,删除,插入,线性表的查找,删除,和插入还会难吗?