线性表

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. python 2.7 数据结构: 基础面试总结

    python中基础的数据类型包括:   1 Number(数字)   2 String(字符串)   3 Li […]...

  3. 深入浅出理解动态规划 | 交叠子问题与最优子结构

    动态规划–交叠子问题(记忆化搜索算法、打表法求解第n个斐波那契数) 动态规划–最优子结 […]...

  4. 重学数据结构(六、树和二叉树)

    树结构是一类重要的非线性数据结构。直观来看,树是以分支关系定义的层次结构。树结构在客观世界广泛存在,如人类社会 […]...

  5. BZOJ3282 – Tree

    Portal to BZOJ3282,Portal to 洛谷P3690 Description 给定\(n( […]...

  6. 【数据结构与算法】003—排序算法(Python)

    写在前面 常见排序算法可以分为两大类: 非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度 […]...

  7. C中二叉排序树的非递归和递归插入操作以及中序遍历代码实现【可运行】

    C中二叉排序树的非递归和递归插入操作以及中序遍历代码实现【可运行】 #include <stdio.h& […]...

  8. P4735 最大异或和 01 Trie

    题目描述 给定一个非负整数序列 \(\{a\}\),初始长度为\(n\)。 有 \(m\) 个操作,有以下两种 […]...

随机推荐

  1. 电子商务系统+java+web+完整项目+包含源码和数据库Java实用源码 – 木穑

    电子商务系统+java+web+完整项目+包含源码和数据库Java实用源码 鸿鹄云商大型企业分布式互联网电子商 […]...

  2. VSTO中Word的Range复制方式

    VSTO中Word的Range复制方式 前言 VSTO是一套用于创建自定义Office应用程序的Visual […]...

  3. 曲率公式及其记忆方法

    曲率的定义    记忆的时候可以记忆为:曲率没有正负所以二阶导要加绝对值,一阶导要平方,一和二的平均值为1.5 […]...

  4. centOS7.1安装nginx与可能遇见的问题

    一,安装nginx(系统:CentOS7.1) 1.Nginx下载地址:http://nginx.org/do […]...

  5. RSA算法介绍 – grefr

    RSA算法介绍 详见:http://blog.yemou.net/article/query/info/tyt […]...

  6. MySQL中的这个池子,强的一批!

    Mysql 中数据是要落盘的,这点大家都知道。读写磁盘速度是很慢的,尤其和内存比起来更是没的说。但是,我们平时 […]...

  7. jQuery烟花效果

    1、依赖源码(function($){$.fn.fireworks=function(options){options=options||{};options.opacity=options.opacity||1;options.widt...

  8. python爬取豆瓣小组700+话题加回复啦啦啦python open file with a variable name

      需求:爬取豆瓣小组所有话题(话题title,内容,作者,发布时间),及回复(最佳回复,普通回复,回复_回复 […]...

展开目录

目录导航