线性表

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. 可持久化线段树+主席树+动态主席树学习笔记

    可持久化线段树 整体还是很容易理解的,网上的教程都挺不错 可持久化的原理在于,借用已经建过的线段树的一部分 比 […]...

  2. codefroces中的病毒,这题有很深的trick,你能解开吗?

    大家好,欢迎阅读周末codeforces专题。 我们今天选择的问题是contest 1419的C题,目前有接近 […]...

  3. 数据结构(七)—–跳表

    数据结构(七)—–跳表 如何理解“跳表”? 对于一个单链表来讲,即便链表中存储的数据是 […]...

  4. B树与B+树区别辨析

    我们都知道,innodb中的索引结构使用的是B+树。B+树是一种B树的变形树,而B树又是来源于平衡二叉树。相较 […]...

  5. 【LCT维护基环内向树森林】BZOJ4764 弹飞大爷

    4764: 弹飞大爷 Time Limit: 30 Sec  Memory Limit: 256 MBSubm […]...

  6. 算法与数据结构基础 – 哈希表(Hash Table)

    算法与数据结构基础 – 哈希表(Hash Table) 2019-08-05 17:50 by b […]...

  7. 重学数据结构之树

    一、树和森林 1.基本概念   树状图(Tree)又称为树,是一种复杂的数据结构。树是由 n(n>=0) […]...

  8. 单链表的python实现

      首先说下线性表,线性表是一种最基本,最简单的数据结构,通俗点讲就是一维的存储数据的结构。   线性表分为顺 […]...

随机推荐

  1. js 强制类型转换 parseInt,parseFloat,number

    Number():概述:Number 对象由 Number() 构造器创建,是经过封装的能让你处理数字值的对象 […]...

  2. 单片机入门 第一课(转) – ottor_J2ME

    单片机入门 第一课(转) 单片机入门 第一课 教学内容:单片机概述1、何谓单片机 一台能够工作的计算机要有这样 […]...

  3. javascript原型

    /** 原型 prototype* * 我们...

  4. [原创]分布式系统之缓存的微观应用经验谈(四) 【交互场景篇】

    分布式系统之缓存的微观应用经验谈(四) 【交互场景篇】    前言   近几个月一直在忙些琐事,几乎年后都没怎 […]...

  5. SpringMVC基础

    一、SpringMVC概述   1、什么是SpringMVC     实现 MVC 设计模式的请求驱动型的轻量 […]...

  6. Session工作原理

    1、第一次向服务器发送请求时,创建一个Session对象,该Session对象有全球唯一的ID2、在创建Ses […]...

  7. Linux中bash shell环境变量

    别名 别名是命令的快捷方式。为那些需要经常执行,但需要很长时间输入的长命令创建快捷方式很有用。语法是: ali […]...

  8. 两种主流桌面虚拟化的对决

    近年来,虚拟化技术已经成为计算机技术发展的趋势。从服务器虚拟化市场的成熟到桌面虚拟化、应用虚拟化等产品的不断出 […]...

展开目录

目录导航