线性表

itstone 2019-03-05 原文

线性表

 

线性表的顺序存储结构

在数据元素的非空有限集中,1).存在唯一的一个被称为“第一个”的数据元素,2).存在唯一的一个被称作“最后一个”的数据元素,3).除第一个之外,集合中的每个数据元素均只有一个前驱;4).除最后一个之外,集合中每个数据元素均只有一个后继。

线性表的顺序存储结构逻辑关系上相邻的两个元素的物理位置上也相邻。

使用线性表时,我们可以用不同的方式进行数据存储,最常用的方式是用一组连续的地址依次存储线性表的数据元素。
假设线性表的每个元素需要占用L个存储单元,并以第一个单元的存储地址作为数据元素的存储位置,则线性表中的第i+1个数据元素的存储位置为LOC(ai+1)和第i个数据元素的存储位置LOC(ai)之间满足下列关系:

一般来说,线性表的第i个元素ai的存储位置为:

 

 

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

顺序存储结构的缺点:容易造成存储结构的三个弱点:

  1. 操作增删时,需要移动大量的数据元素;
  2. 不能充分利用空间,因为在给长度变化较大的线性表预先分配空间时,必然会按最大的空间进行分配;
  3. 标的容量难以扩充。

 

线性表的链式存储结构

特点:可以在任意的存储单元存放线性表的数据元素(元素存储可以是连续的也可以是非连续的),因此,为了表示数据元素ai的后继元素ai+1的逻辑关系,对元素ai来说,除了存储本身元素外还要再存储一个直接后继元素的位置信息,这两部分组成ai的出处映像,称为节点
两个域: 存储节点元素的称为数据域,存储后续元素位置的称为指针域;指针域中存储的信息称为指针或链,n个节点连接成一个链表,即为线性表的链式存储机构。又由于此链表中只包含一个指针域,故又称线性链表或单链表

 

循环链表
特点:循环链表是另一种形式的链式存储结构,特点是,表中最后一个节点的指针域指向头结点,形成了一个环,因此,从表中任一一个节点出发均可找到表中其他的节点。

双向链表
特点:双向链表的节点中有两个指针域,其中一个指向直接后继,另一个指向直接前趋。

 

单向链表的缺点:单向链表的指针域指向的都是直接后驱,若想找到当前节点的直接前趋需要从头结点重新查找

 

发表于 2019-03-05 16:00 孙红岩 阅读() 评论() 编辑 收藏

 

版权声明:本文为itstone原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/itstone/p/10477371.html

线性表的更多相关文章

  1. 数据结构 | 30行代码,手把手带你实现Trie树

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是算法和数据结构专题的第28篇文章,我们一起来 […]...

  2. HashMap的resezi方法中尾部遍历出现死循环问题 Tail Traversing (多线程)

    一、背景介绍: 在看HashMap源码是看到了resize()的源代码,当时发现在将old链表中引用数据复制到 […]...

  3. [SCOI2015] 情报传递

    题目描述 奈特公司是一个巨大的情报公司,它有着庞大的情报网络。情报网络中共有 n 名情报员。每名情报员可能有若 […]...

  4. 数据结构 – ArrayList

    ArrayList是一个动态数组。ArrayList几乎拥有数组所有优点,例如元素有序,索引访问等;并且一般情 […]...

  5. 算法题丨4Sum

    描述 Given an array S of n integers, are there elements a […]...

  6. 十一、静态单链表的实现

    1、静态单链表的提出 需要频繁增删数据元素,可以选择单链表,如果数据元素的最大个数是固定的,可能需要一种新的数 […]...

  7. 有趣的赫夫曼树

    美国有个数学家叫赫夫曼,60年前他根据数据的使用概率,发明了一个二叉树叫赫夫曼树。 这个赫夫曼树被用在了数据压 […]...

  8. 知否?知否?情人眼里出代码

    今天是 0214 ,打乱一下数字就是 1024,程序员最喜欢的一个数字之一。 当然,除此之外,今天也是一年一度 […]...

随机推荐

  1. 小白学Java:File类

    目录 小白学Java:File类 不同风格的分隔符 绝对与相对路径 File类常用方法 常用构造器 创建方法 […]...

  2. 数据结构与算法系列六(栈)

    1.引子 1.1.为什么要学习数据结构与算法? 有人说,数据结构与算法,计算机网络,与操作系统都一样,脱离日常 […]...

  3. 手把手教你搞定个推iOS推送SDK集成

    以下是一位开发者在集成个推iOS推送SDK过程中的真实经历。 作者:Ezreallp 一次偶然的机会,公司的项 […]...

  4. WIN10无法进行Android应用开发真机调试解决方案

    在WIN10操作系统进行ANDROID开发真机调试时,遇到的问题主要归纳一下有以下几点: 一、没有打开“USB […]...

  5. 16套高质量的(内容滑块、幻灯片)PSD模板免费下载

    幻灯片(Slideshow)和内容滑块(Content Slider)是网站中常用的功能模块,在以图片为主的摄 […]...

  6. windows环境下抓密码总结

    在线抓密码   1.mimikatz   privilege::debug token::whoami tok […]...

  7. 二次封装 Reponse,视图家族

    复习 """ 1、整体修改与局部修改 # 序列化 ser_obj = ModelSerializer(mode […]...

  8. Java I/O不迷茫,一文为你导航!

    前言:在之前的面试中,每每问到关于Java I/O 方面的东西都感觉自己吃了大亏..所以这里抢救一下..来深入 […]...

展开目录

目录导航