【数据结构—1】线性表的概念与定义

转载 2015年07月09日 13:25:47

线性表的概念与定义

本文出处请点击这里

以前看伍迷老师讲了这么一个故事:

我经常下午去幼儿园接送儿子,每次都能在门口看到老师带着小朋友们,一个拉着另一个的衣服,依次从教室出来。而且我发现很有规律的是,每次他们的次序都是一样。比如我儿子排在第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在线性表中的位序。

这就是线性表的定义。

相关文章推荐

数据结构—线性表

数据结构与算法基础(二)之线性表的链式存储与指针的概念

上一节我们讨论到了线性表的顺序存储结构的缺点,那就是在进行插入和删除操作的时候需要移动大量的元素,为了解决这个问题,我们可以想到的方法有很多,比如说在相邻元素之间留出一定的位置给待插入的元素使用,但是...

Java之数据结构基础、线性表、栈和队列、数组和字符串,树—学习笔记

Java面试宝典之数据结构基础 —— 线性表篇         这部分内容作为计算机专业最基础的知识,几乎被所有企业选中用来作考题,因此,本章我们从本章开始,我们将从基础方面对数据结构进行讲解,内容...

Java之数据结构基础、线性表、栈和队列、数组和字符串,树—学习笔记

Java面试宝典之数据结构基础 —— 线性表篇         本篇博文转载自:http://blog.csdn.net/zhangerqing/article/details/879651...

数据结构线性表—静态顺序表的实现

本文主要实现静态顺序表基本功能:初始化、插入(头插、尾插、任意位置插入)、删除(头删、尾删、任意位置删除,删除指定元素、删除所有指定元素)、排序(冒泡排序)、逆序、查找(二分查找) //静态顺序表结...

数据结构—线性表(Java、C双语言实现)

线性表 由零个或多个组成的有限序列。首先他需要是序列,当元素有多个的时候,第一元素无前驱,最后一个元素无后继,其余每个元素都有唯一的前驱和后继。线性表中每个数据元素可以由若干个数据项组成。 线性表的顺...

基于c语言严蔚敏版的数据结构—非递减线性表的合并

【注解】正如我在线性表中基本操作中所叙述的所示,当你想定义一个自定义的新功能函数时,在头文件ADT.H中添加函数的声明,最后在自己的source代码中定义该函数即可实现函数的全局使用。我把void M...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)