数据结构之线性表
Posted mohanchen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构之线性表相关的知识,希望对你有一定的参考价值。
线性结构是最常用、最简单的一种数据结构。而线性表是一种典型的线性结构。其基本特点是线性表中的数据元素是有序且是有限的。在这种结构中:
- 存在一个唯一的被称为“第一个”的数据元素;
- 存在一个唯一的被称为“最后一个”的数据元素;
- 除第一个元素外,每个元素均有唯一一个直接前驱;
- 除最后一个元素外,每个元素均有唯一一个直接后继
线性表(Linear List) :是由n(n≧0)个数据元素(结点)a1,a2, …an组成的有限序列。该序列中的所有结点具有相同的数据类型。其中数据元素的个数n称为线性表的长度。
- 当n=0时,称为空表。
- 当n>0时,将非空的线性表记作: (a1,a2,…an) 。
- a1称为线性表的第一个(首)结点,an称为线性表的最后一个(尾)结点。
- a1,a2,…ai-1都是ai(2≦i≦n)的前驱,其中ai-1是ai的直接前驱。
- ai+1,ai+2,…an都是ai(1≦i ≦n-1)的后继,其中ai+1是ai的直接后继。
线性表的抽象数据类型定义如下:
ADT List{
- 数据对象:D = { ai | ai∈ElemSet, i=1,2,…,n, n≧0 }
- 数据关系:R = {<ai-1, ai> | ai-1, ai∈D, i=2,3,…,n }
- 基本操作:
InitList( &L ) 操作结果:构造一个空的线性表L;
ListLength( L ) 初始条件:线性表L已存在;操作结果:若L为空表,则返回TRUE,否则返回FALSE;
GetElem( L, i, &e ) 初始条件:线性表L已存在,1≦i≦ListLength(L);操作结果:用e返回L中第i个数据元素的值;
ListInsert ( L, i, &e ) 初始条件:线性表L已存在,1≦i≦ListLength(L) ;操作结果:在线性表L中的第i个位置插入元素e;
...
} ADT List
线性表的两种存储结构:顺序存储架构、链式存储结构
顺序存储 :把线性表的结点按逻辑顺序依次存放在一组地址连续的存储单元里。用这种方法存储的线性表简称顺序表。
特点:线性表的逻辑顺序与物理顺序一致; 数据元素之间的关系是以元素在计算机内“物理位置相邻”来体现。
链式存储 :用一组任意的存储单元存储线性表中的数据元素。用这种方法存储的线性表简称线性链表。
特点:存储链表中结点的一组任意的存储单元可以是连续的,也可以是不连续的,甚至是零散分布在内存中的任意位置上的;链表中结点的逻辑顺序和物理顺序不一定相同。
常见链表类型:单链表,循环链表,双向链表。
以上是关于数据结构之线性表的主要内容,如果未能解决你的问题,请参考以下文章