43、几种线性表的介绍及实现

一、相关概念

1、线性表(Linear list)是最简单且最常用的一种数据结构。这种结构具有下列特点:存在一个唯一的没有前驱的(头)数据元素;存在一个唯一的没有后继的(尾)数据元素;此外,每一个数据元素均有一个直接前驱和一个直接后继数据元素。

线性表L是n(n≥0)个具有相同属性的数据元素a1,a2,a3,…,an组成的有限序列,其中序列中元素的个数n称为线性表的长度。当n=0时称为空表,即不含有任何元素。

    常常将非空的线性表(n>0)记作: (a1,a2,…an)         

这里的数据元素 ai(1≦i≦n)只是一个抽象的符号,其具体含义在不同的情况下可以不同。

2、线性表有两种基本的存储结构:顺序存储结构和链式存储结构。 

3、顺序表具有以下两个基本特点:

  (1) 线性表的所有元素所占的存储空间是连续的。

  (2) 线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。

43、几种线性表的介绍及实现
43、几种线性表的介绍及实现

4、线性表的链式存储

线性表的链式存储结构就是用一组任意的存储单元(可以是不连续的)存储线性表的数据元素。对线性表中的每一个数据元素,都需用两部分来存储:一部分用于存放数据元素值,称为数据域;另一部分用于存放直接前驱或直接后继结点的地址(指针),称为指针域,称这种存储单元为结点。

43、几种线性表的介绍及实现

43、几种线性表的介绍及实现

5、循环链表

循环链表(Circular Linked List)是另一种形式的链式存储结构。它将单链表中最后一个结点的指针指向链表的头结点,使整个链表头尾相接形成一个环形。

43、几种线性表的介绍及实现

6、双向链表
    双向链式是用两个指针表示结点间的逻辑关系。即增加了一个指向其直接前驱的指针域,这样形成的链表有两条不同方向的链,前驱和后继,因此称为双链表。

typedef struct DNode{

  ElemType data;

  struct DNode *prior;

  struct DNode *next;

 }Dnode,*DuLinkList;

43、几种线性表的介绍及实现

7、实际使用过程中的定义形式
43、几种线性表的介绍及实现

二、C语言描述

1、线性表的顺序表示

43、几种线性表的介绍及实现

43、几种线性表的介绍及实现43、几种线性表的介绍及实现

43、几种线性表的介绍及实现

43、几种线性表的介绍及实现43、几种线性表的介绍及实现

2、线性表的链式存储表示

43、几种线性表的介绍及实现43、几种线性表的介绍及实现43、几种线性表的介绍及实现43、几种线性表的介绍及实现

43、几种线性表的介绍及实现