-
以前看伍迷老师讲了这么一个故事:
我经常下午去幼儿园接送儿子,每次都能在门口看到老师带着小朋友们,一个拉着另一个的衣服,依次从教室出来。而且我发现很有规律的是,每次他们的次序都是一样。比如我儿子排在第5个,毎次他都是在第5个,前面同样是那个小女孩,后面一直是那个小男孩。这点让我很奇怪,为什么一定要这样?
有一天我就问老师原因。她告诉我,为了保障小朋友的安全,避免漏掉小朋友, 所以给他们安排了出门的次序,事先规定好了,谁在谁的前面,谁在谁的后面。这样养成习惯后,如果有谁没有到位,他前面和后面的小朋友就会主动报告老师,某人不在。即使以后如果要外出到公园或博物馆等情况下,老师也可以很快地清点人数,万一有人走丢’也能在最快时间知道,及时去寻找。
我一想,还真是这样。小朋友们始终按照次序排队做事,出意外的情况就可能会少很多。毕竟,遵守秩序是文明的标志,应该从娃娃抓起。而且,真要有人丢失,小孩子反而是最认真负责的监督员。
-
嗯,这是一个很生动的例子。这种排好队的组织方式,其实就是现实中的线性表。之前我们讲了那么多概念性的东西,今天可以拿具体的对象来练手了。
线性表(List):零个或多个数据元素的有限序列。
-
有几个地方需要明确一下的:
1. 首先它是一个序列。也就是说,元素之间是有顺序的,若元素存在多个,则第一个元素无前驱,最后一个元素无后继,其他每个元素都有且只有一个前驱和后继。如果一个小朋友去拉两个小朋友后面的衣服,那就不可以排成一队了;同样,如果一个小朋友后面的衣服,被两个甚至多个小朋友拉扯,这其实是在打架,而不是有序排队。

2. 然后,线性表强调是有限的,小朋友班级人数是有限的,元素个数当然也是有限的。事实上,在计算机中处理的对象都是有限的,那种无限的数列,只存在于数学的概念中。
如果用数学语言来进行定义:
若将线性表记为(a1, ……, ai-1, ai, ai+1, ……,an),则表中ai-1领先于ai,ai领先于ai+1,称ai-1是ai的直接前驱元素,ai+1是ai的直接后继元素。当丨=1, 2, ……, n-1时,ai有且仅有一个直接后继,当i=2, 3, ……, n时,ai有且仅有一个直接前驱。
所以线性表元素的个数n (n>0)定义为线性表的长度,当n=0时,称为空表。
在非空表中的每个数据元素都有一个确定的位置,如a1是第一个数据元素,an是最后一个数据元素,ai是第i个数据元素,称i为数据元素ai在线性表中的位序。
这就是线性表的定义。
延伸阅读
此文章所在专题列表如下:
- 第01话:线性表的概念与定义
- 第02话:线性表的抽象数据类型ADT定义
- 第03话:线性表的顺序存储结构
- 第04话:线性表的初始化
- 第05话:线性表的遍历、插入操作
- 第06话:判断线性表是否为空与置空操作
- 第07话:线性表的查找操作
- 第08话:线性表删除某个元素
- 线性表顺序存储的优缺点
- 线性表链式存储结构的由来与基本概念
- 单链表的头指针、头结点与首元结点
- 单链表的结构体定义与声明
- 单链表的初始化
- 单链表的插入与遍历操作
- 单链表的删除某个元素的操作
- 获取单链表中的指定位置的元素
- 查找某数在单链表中的位置
- 用头插法实现单链表整表创建
- 用尾插法实现单链表整表创建
- 将单链表重置为空表
- 单链表反转/逆序的两种方法
- 单链表反转/逆序的第三种方法
- 求单链表倒数第N个数
- 用标尺法快速找到单链表的中间结点
- 如何判断链表是否有环的存在
- 单链表建环,无环链表变有环
- 删除单链表中的重复元素
本文地址:http://www.nowamagic.net/librarys/veda/detail/2198,欢迎访问原出处。