首页 > 代码库 > 线性表

线性表

(Linear list)
线性表
首先我们讨论线性结构,线性结构的特点是:在数据元素的非空有限集合中
  1. 存在唯一的一个被称作“第一个”的数据元素。
  2. 存在唯一的一个被称作“最后一个”的数据元素。
  3. 除第一个元素之外,集合中每一个数据元素均只有一个前驱。
  4. 除最后一个元素之外,集合中每一个数据元素均只有一个后继。
 
线性表定义

线性表是由n个数据元素组成的有限序列

若将线性表记为(a1,…,ai-1,ai,ai+1,…an),则表中ai-1领先于ai,ai领先于ai+1,称ai-1是ai的直接前驱元素,ai+1是ai的直接后继元素。

顺序存储结构

顺序表是指顺序存储结构的线性表,指的是用一段地址连续的存储单元依次存储线性表的数据元素。

#define int ElemType
#define LIST_INIT_SIZE 100
#define LISTINCREASE 10
typedef struct { 
     ElemType *elem;  // 存储空间基址 
     int length;      //当前长度 
     int listsize;    //当前分配的存储容量
}

链式存储结构

线性表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素,这组存储单元可以存在内存中未被占用的任意位置。

也就是说,链式存储结构的线性表由一个(可以使零)或者多个结点(Node)组成。每个节点内部又分为数据域和指针域(链)。数据域存储了数据元素的信息。指针域存储了当前结点指向的直接后继的指针地址。因为每个结点只包含一个指针域,所以叫做单链表。顾名思义,当然还有双链表。

技术分享

 

typedef struct LNode{ 
     ElementType *data; 
     struct LNode *next;
}LNode, *LinkList

线性表