数据结构 笔记3 顺序表和链表

头结点:是在链表的开始结点之前附加的一个结点,是会动态改变的

头指针:是指指向开始结点的指针(没有头结点的情况下)

开始结点:链表的第一个结点,他没有直接前趋

 

顺序表

  线性表的数据元素按其逻辑此序依次存入一组地址连续的存储单元里,用这种方法存储的线性表称为顺序表

  线性表的第i个元素a[i]的存储位置可用公式表示: LOC(a[i]) = LOC(a[1]) + (i - 1) * d

  LOC(a[1]) 是线性表的第一个元素a[1]的存储位置,通常称之为基地址

  d为每个数据元素占用的单元数

  

  因此只要确定了线性表存储的起始位置,线性表中任意一个元素都可随机存取,所以顺序表是一种随机存取的结构

  顺序表的 插入,删除运算的时间复杂度都为O(n)

 

链表

  链表的结点除了存储本身的信息外,还有一个存储指示其后继元素存储位置的指针

  结点一般包含两个域:存储数据元素的域称为数据域,存储直接后继存储地址的域称为指针域。

  链表的 插入,删除,检索运算的时间复杂度都为O(n)

  单链表:

  1.单链表中每个结点的存储地址是存放在其直接前趋结点的指针域(next)中,而开始结点无直接前趋,因此设置头指针head指向开始结点。

  建立单链表有两种方法: 头插法,尾插法

 

  循环链表:

  1.循环链表是链式存储结构的另一种形式。

  2.其特点是单链表中最后一个结点(终端结点)的指针域不为空,而是指向链表的头结点,使整个链表构成一个环。

 

  双向链表:

  1.在单链表的结点类型中增加一个指向其直接前趋的指针域prior,形成两条不同方向的链。

  

顺序表与链表的比较

1.时间性能:对线性表的操作是经常性的查找运算,以顺序表形式存储为宜。如果经常进行的运算时插入和删除运算,以链式存储结构为宜。

2.空间性能:空间大小可以预先确定的情况下,适合使用顺序存储结构。对数据量变化较大的动态问题,以链式存储结构为好。

存储密度的计算公式为: 存储密度 = (结点数据域所占空间)/ (整个结点所占空间),一般来说结点存储密度越大,存储空间的利用率就越高。

顺序表的存储密度是1,而链表结点的存储密度肯定小于1.

  

  

posted @ 2016-05-09 22:44  sz_zzm  阅读(498)  评论(0)    收藏  举报