美文网首页
数据结构——线性表(下)

数据结构——线性表(下)

作者: JsCoderr | 来源:发表于2018-05-02 11:04 被阅读0次

了解过线性表的链式存储结构以后,有人就想出来用数组来代替指针,来描述单链表。看看他们是怎么做到的。

静态链表

让数组的元素都由两个数据域组成,data和cur。也就是说,数组的每个下标都有对应的一个data和cur。数据域data,用来存放数据元素,而cur相当于单链表中的next指针,存放该元素的后继在数组中的下标,我们把cur叫做游标。

这种用数组描述的链表叫做静态链表,我们把这种描述叫做游标实现法。

另外我们对数组第一个和最后一个元素作为特殊元素处理,不存数据。我们通常把未使用的数组元素称为备用链表

数组第一个元素,即下标为0的元素的cur存放备用链表的第一个节点的下标;而数组最后一个元素的cur存放第一个有数值的元素的下标,相当于单链表中的头节点的作用。

如下图:


这里写图片描述

我们对静态链表的插入和删除操作简单了解以下:

静态链表中要解决的是:如何用静态模拟动态链表的存储空间的分配,需要时申请,无用时释放。

静态链表的插入

这里写图片描述

静态链表的删除

这里写图片描述

静态链表的优缺点

  • 在插入和删除操作时,只需要修改游标,不需要移动元素,从而改进了在顺序存储结构中的插入和删除操作需要移动大量元素的缺点。
  • 没有解决连续内存分配带来的表长度难以确定的问题。
  • 失去了顺序存储结构随机存取的特点。

循环链表

对于单链表,由于每个结点只存储了向后的指针,到了尾标就停止了向后链的操作,这样,当某一个结点就无法找到它的前驱结点了。

将单链表中终端结点的指针端由空指针改为指向头结点,就使整个单链表形成一个环,这种头尾相接的单链表称为单循环链表,简称循环链表

显然解决了一个问题:当从一个结点出发,访问链表的所有结点。


这里写图片描述

双向链表

双向链表:是在单链表的每个结点中,再设置一个指向其前驱结点的指针域

双向链表的好处:某个结点对前后结点的操作更快;

双向链表的不足:一个结点,两个指针,耗内存更大。

既然单链表可以由循环链表,那么双向链表当然也可以是循环表,其结构如下:

这里写图片描述

双向链表的插入

image

双向链表的删除

这里写图片描述

关于线性表就整理到这里了,文中有不对或不足的地方,希望大家能够反馈给我,一起进步。

更多精彩内容,关注我的微信公众号——Android机动车
[图片上传失败...(image-3c8611-1525230244407)]

相关文章

  • 目录 - 数据结构

    总目录 数据结构 第01局:绪论 数据结构 第02局:线性表 上 数据结构 第03局:线性表 下 数据结构 第04...

  • iOS设计模式--迭代器

    学习迭代器之前,先看一种数据结构--线性表 线性表:线性表是最基本,最简单,也是最常用的一种数据结构。 线性表中数...

  • Java造轮子-数据结构-线性表

    数据结构-线性表 @(数据结构) 线性表是数据结构中的逻辑结构。可以存储在数组上,也可以存储在链表上。 顺序表(数...

  • 数据结构与算法02——线性表

    一、 线性表线性表是最基本、最简单、也是最常用的一种数据结构。线性表(linear list)是数据结构的一种,一...

  • 23-二叉树基础(上):什么样的二叉树适合用数组来存储?

    前面讲的都是线性表结构,栈、队列等等。今天讲一种非线性表结构,树。树这种数据结构比线性表的数据结构要复杂得多,内容...

  • 数据结构之线性表

    数据结构之线性表 1. 什么是线性表 线性表是一种最常用,最简单的一种数据结构。它是n个数据元素的有限序列。n 为...

  • 玩转数据结构之线性表

    0. 序言 学习数据结构的第一步,让我们来了解下线性表。 1. 概念 线性表是最基本的数据结构。一个线性表是由N个...

  • 栈和队列

    栈和队列是两种应用非常广泛的数据结构,它们都来自线性表数据结构,都是“操作受限”的线性表。 栈 栈(Stack):...

  • 2019-06-10

    数据结构线性表自己高数中值定理

  • 数据结构——线性表(下)

    了解过线性表的链式存储结构以后,有人就想出来用数组来代替指针,来描述单链表。看看他们是怎么做到的。 静态链表 让数...

网友评论

      本文标题:数据结构——线性表(下)

      本文链接:https://www.haomeiwen.com/subject/sywqrftx.html