数据结构之线性表

  线性结构是最常用、最简单的一种数据结构。而线性表是一种典型的线性结构。其基本特点是线性表中的数据元素是有序且是有限的。在这种结构中:

  • 存在一个唯一的被称为“第一个”的数据元素;
  • 存在一个唯一的被称为“最后一个”的数据元素;
  • 除第一个元素外,每个元素均有唯一一个直接前驱;
  • 除最后一个元素外,每个元素均有唯一一个直接后继

  线性表(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

  线性表的两种存储结构:顺序存储架构、链式存储结构

          顺序存储 :把线性表的结点按逻辑顺序依次存放在一组地址连续的存储单元里。用这种方法存储的线性表简称顺序表。
     特点:线性表的逻辑顺序与物理顺序一致; 数据元素之间的关系是以元素在计算机内“物理位置相邻”来体现。

     链式存储 :用一组任意的存储单元存储线性表中的数据元素。用这种方法存储的线性表简称线性链表。

     特点:存储链表中结点的一组任意的存储单元可以是连续的,也可以是不连续的,甚至是零散分布在内存中的任意位置上的;链表中结点的逻辑顺序和物理顺序不一定相同。

  常见链表类型:单链表,循环链表,双向链表。
 

    

    

原文地址:https://www.cnblogs.com/mohanchen/p/9308548.html