数据结构算法代码实现——线性表的定义(一)
2015-06-08 10:40
351 查看
线性表的定义
线性表:是最常用且最简单的一种数据结构,它是一种线性数据结构,是由类型相同的n个(n≥0)数据元素组成的有序序列。 线性表的特点:有且只有一个被称作“第一个”的数据元素,有且只有一个被称为“最后一个”的数据元素。除第一个数据元素之外, 其他元素都只有一个前驱,除最后一个数据元素之外,其他元素都只有一个后继。简单的说,其特点是数据元素之间存在”一一对应 (序偶关系)“ 的关系。 好,现在举个例子:比如英文字母表(A,B,C,D…Y,Z),可以看出除了A和Z字母之外,其他字母的前后都各有一个字母,A是B的前驱,C是B的后继。 即属于同一数据对象。
线性表的形式定义
数据结构的形式定义为:数据结构是一个二元组Data Structure=(D,S)。其中:D是数据元素的有限集,S是D上关系的有限集。 所以线性表也可以用二元组的形式定义: List = (D,R) D =(ai | 1≤i≤n,n≥0) R ={<ai,ai+1> | ai,ai+1∈D,1≤i≤n-1} 其中,关系<ai,ai+1>是一个序偶关系,表示线性表中数据元素的相邻关系。 举例:使用二元组的方式表示上述字母表 List = (D,R) D = {A,B,C,D…Y,Z} R = {<A,B>,<B,C>,<C,D>,<D,E>……<W,X>,<X,Y>,<Y,Z>}
线性表的抽象数据类型(ADT)
抽象数据类型可以用三元组的形式表示(D,S,P),其中,D是数据对象,S是D上的关系集,P是对D的基本操作集。也可以记为: 数据结构+基本操作【DSP】。 有关线性表详细的ADT,请参考严蔚敏数据结构第19页。在下一篇,我们会用C语言来编程实现所有的基本操作。
线性表的表示与实现(D,S)
数据元素之间的关系在计算机中有两种不同的表示方法:顺序映像和非顺序映像。进而会得到两种不同的存储结构: 顺序存储结构和链式存储结构。(物理(存储)结构)。 线性表是一种线性结构(逻辑结构),属于4大基本逻辑结构之一。所以,逻辑结构在用计算机表示存储时即会有两种方式:顺序存储结构和链式存储结构。
线性表的基本操作(P)
表在我们生活中,就是用来存放数据的。数据的来源可以是书上、电视上的信息。线性表也是如此,使用计算机在内部存储一样表,数据的来源可以 是数据库等等。 那么,我们为什么要用表来保存这些数据那,就是为了我们以后更方便的查找数据,并且表中的数据也不会是一成不变的。 好,举个例子:比如说一辆火车,每节火车会有编号,如果有破的车厢还需要卸载或更换新的车厢。因此,我们要编写一些函数来实现这类操作。 线性表在计算机存储中有两种方式,所以不同方式的存储基本操作也会不同。各有优缺点,所以,我们要根据具体的情况来使用不同的方式。
下面几篇文章,我们会讨论线性表的不同存储方式,以及基本操作的C语言代码实现。
相关文章推荐
- 简单数据结构之顺序表(C++ 引用传递实现)
- 数据结构和算法-005 数组排序 二分法检索
- To_10_r_100_1---N个孩子站成一排,给每个人设定一个权重(已知)。按照如下的规则分配糖果
- 数据结构:查找
- 一元多项式的表示及相加 数据结构
- 应用高级数据结构优化Redis
- 数据结构与算法之循环队列
- uva 673 平衡的括号
- AVL树的旋转
- 常见算法题:单链表二路归并
- Hadoop基于文件的数据结构及实例
- leetcode--Spiral Matrix II
- 常见算法题:判断表达式是否是回文
- 数据结构与算法分析-贪念算法
- 数据结构和算法
- 数据结构与算法分析-索引
- FLOYD
- 数据结构和算法-004 数组排序 插入排序
- 数据结构与算法学习笔记(一)最大公约数与最小公倍数
- To_10_r_100_0---把二元查找树转变成排序的双向链表