智胜彩票潮流网,最新潮鞋资讯分享!

微信号:weixin888

静态链表 - dongry - 博客园

时间:2020-05-21 10:32人气:编辑:admin

  静态链表:线性存储结构的一种,兼顾顺序表和链表的优点,是顺序表和链表的升级;静态链表的数据全部存储在数组中(顺序表),但存储的位置是随机的,数据直接的一对一关系是通过一个整型变量(称为“游标”,类似指针的功能)维持。

  注:通常静态链表会将第一个数据元素放到数组下标为1(即a[1])的位置中。

  图中从a[1]存储的数据元素4开始,通过存储的游标变量3,可以在a[3]中找到元素4的直接后继元素5;通过元素a[3]存储的游标变量6,可在在a[6]中找到元素5的直接后继元素6;这样一直到某元素的游标变量为0截止(a[0]默认不存储数据元素)

  静态链表中,除了数据本身通过游标组成链表外,还需要有一条连接各个空闲位置的链表,称为备用链表。

  作用:回收数组中未使用或者之前使用过(现在不用)的存储空间,留待后期使用。即静态链表使用数组申请的物理空间中,存在两个链表,一条连接数据,另一条连接数组中为使用的空间。

  注:通常备用链表的表头位于数组下标为0(a[0])的位置,而数据链表的表头位于数组下标为1(a[1])的位置。

  静态链表中设置备用链表的好处是,可以清楚地知道数组中是否有空闲位置,以便数据链表添加新数据时使用。比如,若静态链表中数组下标为 0 的位置上存有数据,则证明数组已满。

  在数据链表未初始化之前,数组中所有位置都处于空闲状态,所以都链接在备用链表上。(图1)

  备用链表摘除节点最简单的方法是摘除a[0]的直接后继节点(即摘除a[1]的游标2);同样,向备用链表中添加空闲节点也是添加作为a[0]新的直接后继节点(图二中a[1]为a[0]新的直接后继结点(游标为2)、图三中a[2]为a[0]新的直接后继结点(游标为3)、图四中a[3]为a[0]新的直接后继结点(游标为4))。因为 a[0] 是备用链表的第一个节点,我们知道它的位置,操作它的直接后继节点相对容易,无需遍历备用链表,耗费的时间复杂度为为O(1)。

标签: 静态链表  
相关资讯
热门频道

热门标签