顺序表与数组

2023-11-15

顺序表是在计算机内存中以数组的形式保存的线性表。

顺序表是指用一组地址连续的存储单元依次存储数据元素的线性结构。线性表采用顺序存储的方式存储就称之为顺序表,顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中。线性表采用指针链接的方式存储就称之为链表。

线性表是从逻辑结构的角度来说的,除了头和尾之外,它的每一个元素都只有一个前驱元素和一个后驱元素。各种队列(单向、双向、循环队列),栈等都是线性表的不同例子。

而数组是从物理存贮的角度来说的,线性表可以用数组存贮也可以用链表来存贮。同样的队列和栈也可以用数组和链表存贮,各有利弊。具体使用时,根据具体情况选择。

所以说,数组是一个更大的概念。使用数组,不但可以存储线性表,也可存储非线性结构的数据结构。比如堆、完全二叉树、乃至于其它类型的树、图等

顺序表与数组都是数据结构,只是描述角度不同。顺序表是从逻辑结构的角度来说的,它的每一个元素都只有一个前驱元素和一个后驱元素除了头和尾,逻辑结构还有队列,堆栈,树,图等。而数组是从物理存贮的角度来说的,顺序表用数组存贮也可以用链表来存贮。同样的队列也可以用数组和链表存贮,各有利弊。具体使用时,根据具体情况选择。

  1. 数组就是相同数据类型的元素按一定顺序排列的集合。

    一句话:就是物理上存储在一组联系的地址上。也称为数据结构中的物理结构。

  2. 线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的。

    一句话:线性表是数据结构中的逻辑结构。可以存储在数组上,也可以存储在链表上。

  3.  线性表的结点按逻辑次序依次存放在一组地址连续的存储单元里的方法。用顺序存储方法存储的线性表简称为顺序表。

    一句话:用数组来存储的线性表就是顺序表。

何谓链表? 
:链式存储的线性表,简称链表。链表由多个链表元素组成,这些元素称为节点。结点之间通过逻辑连接,形成链式存储结构。存储结点的内存单元,可以是连续的也可以是不连续的。逻辑连接与物理存储次序没有关系。


链表分为两个域: 
值域:用于存放结点的值 
链域:用于存放下一个结点的地址或位置

从内存角度出发: 链表可分为 静态链表、动态链表。 
从链表存储方式的角度出发:链表可分为 单链表、双链表、以及循环链表。


静态链表: 
把线性表的元素存放在数组中,这些元素可能在物理上是连续存放的,也有可能不是连续的,它们之间通过逻辑关系来连接,数组单位存放链表结点,结点的链域指向下一个元素的位置,即下一个元素所在的数组单元的下标。显然静态链表需要数组来实现。 
引出的问题:数组的长度定义的问题,无法预支。


动态链表:(实际当中用的最多) 
改善了静态链表的缺点。它动态的为节点分配存储单元。当有节点插入时,系统动态的为结点分配空间。在结点删除时,应该及时释放相应的存储单元,以防止内存泄露。


单链表: 
单链表是一种顺序存储的结构。 
有一个头结点,没有值域,只有连域,专门存放第一个结点的地址。 
有一个尾结点,有值域,也有链域,链域值始终为NULL。 
所以,在单链表中为找第i个结点或数据元素,必须先找到第i - 1 结点或数据元素,而且必须知道头结点,否者整个链表无法访问。


循环链表: 
循环链表,类似于单链表,也是一种链式存储结构,循环链表由单链表演化过来。单链表的最后一个结点的链域指向NULL,而循环链表的建立,不要专门的头结点,让最后一个结点的链域指向链表结点。 
(循环链表与单链表的区别) 
区别一、链表的建立。单链表需要创建一个头结点,专门存放第一个结点的地址。单链表的链域指向NULL。而循环链表的建立,不要专门的头结点,让最后一个结点的链域指向链表的头结点。 
区别二、链表表尾的判断。单链表判断结点是否为表尾结点,只需判断结点的链域值是否是NULL。如果是,则为尾结点;否则不是。而循环链表盘判断是否为尾结点,则是判断该节点的链域是不是指向链表的头结点。


双链表: 
双链表也是基于单链表的,单链表是单向的,有一个头结点,一个尾结点,要访问任何结点,都必须知道头结点,不能逆着进行。而双链表则是添加了一个链域。通过两个链域,分别指向结点的前结点和后结点。这样的话,可以通过双链表的任何结点,访问到它的前结点和后结点。但是双链表还是不够灵活,在实际编程中比较常用的是循环双链表。但循环双链表使用较为麻烦。

序表与数组都是数据结构,只是描述角度不同。顺序表是从逻辑结构的角度来说的,它的每一个元素都只有一个前驱元素和一个后驱元素除了头和尾,逻辑结构还有队列,堆栈,树,图等。而数组是从物理存贮的角度来说的,顺序表用数组存贮也可以用链表来存贮。同样的队列也可以用数组和链表存贮,各有利弊。具体使用时,根据具体情况选择。

1.逻辑结构:

所谓逻辑结构就是数据与数据之间的关联关系,准确的说是数据元素之间的关联关系。

注:所有的数据都是由数据元素构成,数据元素是数据的基本构成单位。而数据元素由多个数据项构成。

逻辑结构有四种基本类型:集合结构、线性结构、树状结构和网络结构。也可以统一的分为线性结构和非线性结构。

2.物理结构:

数据的物理结构就是数据存储在磁盘中的方式。官方语言为:数据结构在计算机中的表示(又称映像)称为数据的物理结构,或称存储结构。它所研究的是数据结构在计算机中的实现方法,包括数据结构中元素的表示及元素间关系的表示。

而物理结构一般有四种:顺序存储,链式存储,散列,索引

3.逻辑结构的物理表示:

线性表的顺序存储则可以分为静态和非静态:静态存储空间不可扩展,初始时就定义了存储空间的大小,故而容易造成内存问题。

线性表的链式存储:通过传递地址的方式存储数据。

单链表:节点存储下一个节点的地址-------------->单循环链表:尾节点存储头结点的地址

双链表:节点存储前一个和后一个节点的地址,存储两个地址。---------------->双循环链表:尾节点存储头结点的地址。

4.高级语言应用:

数组是顺序存储

指针则是链式存储

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

顺序表与数组 的相关文章

  • 阿里云:疫情期间全力保障教育平台“停课不停学”

    新冠肺炎疫情牵动全国 减少人员聚集 切断传染途径成为主要的防控措施 在严峻的疫情形势之下 全国教育培训机构陆续停止线下教学 教育部也官宣原定于2020年2月17日开始的春季学期延期开学 号召学生在家不外出 不聚会 不参加集中性活动 应对疫情
  • 表白网站怎么上传到服务器,能上传到云服务器的表白模板

    能上传到云服务器的表白模板 内容精选 换一换 资源包括静态语音 TTS放音以及短消息 在您进行流程编排前 需要先将涉及到的资源 包括语音 短信模板添加到系统中 才能继续配置流程 传统的HPC使用中存在如下问题 投资成本高 扩容部署复杂 重复

随机推荐

  • 双稳态电子开关、单按键自锁电路仿真

    记录一种单按键自锁开关的原理及仿真 另外一家的器件截图 分别是A19T A09T A09T A19T 可以使用 AO3401 立创代号 C727156 关键参数 A09T 关键参数 上电瞬间仿真 按键后的切换后情况 静态功耗 132uA 图
  • go-zero&go web集成JWT和cobra命令行工具实战

    前言 上一篇 从零开始基于go zero的go web项目实战 01项目初始化 从零开始基于go zero搭建go web项目实战 02集成JWT和cobra命令行工具 源码仓库地址 源码 https gitee com li zheng
  • 微信小程序介绍

    目录 1 什么是小程序 2 小程序可以干什么 2 1 相关资料 2 2 申请微信小程序测试账号 3 开发一个demo 3 1 创建项目 3 2 配置 3 3 常用框架 3 4 目录结构说明 目录结构 小程序代码构成 JSON 配置 小程序配
  • el-table 列里面嵌套 el-table

    一 达到的效果如下图 二 实现流程 2
  • 强大而精致的机器学习调参方法:贝叶斯优化

    一 简介 贝叶斯优化用于机器学习调参由J Snoek 2012 提出 主要思想是 给定优化的目标函数 广义的函数 只需指定输入和输出即可 无需知道内部结构以及数学性质 通过不断地添加样本点来更新目标函数的后验分布 高斯过程 直到后验分布基本
  • spring boot之actuator健康检查

    什么是actuator SpringBoot自带监控功能Actuator 可以帮助实现对程序内部运行情况监控 比如监控状况 Bean加载情况 环境变量 日志信息 线程信息等 官翻文档 https blog csdn net alinyua
  • java实体类相互转换

    工具类 public class SmartBeanUtil 复制bean的属性 param source 源 要复制的对象 param target 目标 复制到此对象 public static void copyProperties
  • dataframe多种更改数据的方法

    以下是测试的数据 import pandas as pd data name Alice Bob Cindy David age 25 23 28 24 gender woman man woman man df pd DataFrame
  • 人工智能目标检测数据集:飞机(3)

    本数据集为飞机卫星图 包括J用 民用 以及通用飞机 图片数量1000张 图片尺寸为1024x1024 RGB彩图 仅包含一类目标 飞机 数据集已经打好标签 标签格式为常用的pascal voc格式 xml 可以直接用于目标检测模型的训练 Y
  • 如何快速求最大公约数和最小公倍数

    可以运用辗转相除法 即 326 78 78 326 78 78 14 14 78 14 14 8 8 14 8 8 6 6 8 6 6 2 2 6 2 0 此时结束 这个时候2就是最大公约数 所用原理是 1 a b a ka b 其中a b
  • 正则表达式函数

    匹配函数 match函数是从头开始匹配 如果刚开始匹配不成 就无法再进行匹配了 import re result re match r a zA Z 大Abc print result 输出结果 None search函数 只要字符串中有满
  • vue和ajax

    常用发送ajax的方法 xhr jQury get post axios fetch window内置 promise风格 会把返回数据包两层promise 而且兼容不好 v resouce server1 js const express
  • java获取文件夹下所有图片_【windows技巧】快速获取文件夹内所有文件名称列表...

    转自 百度经验 https jingyan baidu com article 3aed632e3917c870108091d1 html 1 打开一个文件夹 gt 2 新建一个TXT文档 将名字命名为 文档列表 gt 3 在TXT文档里输
  • c++什么时候生成默认拷贝构造函数

    需要默认拷贝构造函数原因 如果不提供默认拷贝构造函数 编译器会按照位拷贝进行拷贝 位拷贝指的是按字节进行拷贝 有些时候位拷贝出现的不是我们预期的行为 会取消一些特性 以下是需要默认拷贝构造函数的必要条件 1 类成员也是一个类 该成员类有拷贝
  • 如何实现无线网卡上外网+有线上内网=同时上网

    网上那些花里胡哨的 一顿操作然并卵 已补充成功操作详情 请翻到最后面查看 前面内容请忽视 至少我现在根本实现不了 但是会比拔插网线换来换去方便些 记录下 需要的自取 实例 一 开始 1 管理员打开cmd命令 2 route print 查看
  • chatgpt赋能python:怎么让Python执行完不关闭的SEO

    怎么让Python执行完不关闭的SEO 作为一名有十年Python编程经验的工程师 我深知Python在SEO技术中的重要性 然而 很多人可能不知道如何让Python执行完任务后不关闭 这将会影响我们的SEO效果 因此 在这篇文章中 我将向
  • xlwt:ValueError: column index (256) not an int in range(256)

    xlwt最大列只支持255列 超过范围会报错 可以考虑用xlsxwriter
  • 安卓已死?毕业一年萌新的Android大厂面经,年薪超过80万!

    前言 最近我一直在面试高级工程师 不管初级 高级 程序员 我想面试前 大家刷题一定是是少不了吧 我也一样 我在网上找了很多面试题来看 最近又赶上跳槽的高峰期 好多粉丝 都问我要有没有最新面试题 索性 我就把我看过的和我面试中的真题 及答案都
  • layer.msg 的time 时间停留问题

    layer msg 同上 icon 1 time 2000 2秒关闭 如果不配置 默认是3秒 function do something time 属性为弹框停留时间 单位为毫秒 tipsMore 属性为是否同时显示多个弹框 true为显示
  • 顺序表与数组

    顺序表是在计算机内存中以数组的形式保存的线性表 顺序表是指用一组地址连续的存储单元依次存储数据元素的线性结构 线性表采用顺序存储的方式存储就称之为顺序表 顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中 线性表采用指针链接