数据结构-线性表-顺序存储

线性表概念

线性表是一种线性结构,它是由n(n≥0)个数据元素a1,a2,…,an组成的有限序列。

线性表的基本运算

  1. 初始化 Initiate (L):建立一个空表 L=(),L 不含数据元素。
  2. 求表长度 Length(L):返回线性表 L 的长度。
  3. 读表元素 Get (L,i):返回线性表第 i 个数据元素,当i 不满足1≤i≤Length(L)时,返回一特殊值。
  4. 定位 Locate(L,x):查找线性表中数据元素值等于x 的结点序号,若有多个数据元素值与 x 相等,运算结果为这些结点中序号的最小值,若找不到该结点,则运算结果为0。
  5. 插入 Insert(L,x,i):在线性表 L 的第 i 个数据元素之前插入一个值为 x 的新数据元素,参数 i 的合法取值范围是 1≤i≤n+1。操作结束后线性表L 由(a1,…,a(i-1), ai,…,an)变为(a1,…,a(i-1),x, ai,…,an),表长度加 1。
    1. 当插入位置为非法位置,不可做正常插入操作。
    2. 当表空间已满,不可再做插入操作。
  6. 删除 Delete (L,i):删除线性表 L 的第 i 个数据元素ai,i 的有效取值范围是 1≤i≤ n。删除后线性表 L 由(a1,…,a(i-1), ai,…,an)变为(a1,…,a(i-1), a(i+1),…,an),表长度减 1。 当要删除元素的位置i不在表长度内(即i<1或i>L.length)时为非法位置,不能做正常的删除操作。

线性表的顺序存储

  1. 将表中的结点依次存放在计算机内存中一组连续的存储单元中,数据元素在线性表中的邻接关系决定它们在存储空间中的存储位置,即逻辑结构中相邻的结点其存储位置也相邻。用顺序存储实现的线性表称为顺序表。一般使用数组来表示顺序表。顺序存储线性表时,需要存储存储单元大小,数据个数

顺序存储插入方法

  1. 在该位置上插入新结点x,将表中位置为n,n-1,…,i上的结点,依次后移到位值n+1,n,…,i+1上,空出第i个位置。
  2. 仅当插入位置i=n+1时,才无须移动结点,直接将x插入表的末尾。该顺序表长度+1。
  3. 存储算法,算法的平均复杂度是O(n)
    void insert(Array arr, DataType x, int i) {//将元素 x 插入到顺序表arr 的第 i 个数据元素之前  if (arr.length == Maxsize)exit("表已满");if (i < 1 || i > arr.length + 1)exit("插入位置错误");//检查插入位置是否合法 for (j = arr.length; j >= i; j--) { //初始 i=arr.length  	   arr.data[j] = L.data[j - 1]; //依次后移  	}arr.data[i - 1] = x; //元素 x 调整到下标为 i-1 的位置  	arr.length++;  //表长度加 1 }

顺序存储删除方法

  1. 删除第i个元素,若1≤i≤n-1,则必须将表中位置i+1,i+2,…,n的结点,依次前移到位置i,i+1,…,n-1上,以填补删除操作造成的空缺;该表长度减1。
  2. 仅当删除位置i=n时,才无须移动结点,直接令表长度减1即可
  3. 删除算法,算法的平均复杂度是O(n)
    void delete(Array A, int i) {//删除线性表L中的第i个数据结点if (i < 1 || i > A.length) //检查位置是否合法exit("非法位置");for (j = j; j < A.length; j++) { //第i个元素的下标为i-1A.data[j - 1] = A.data[j]; //依次左移}A.length--;//表长度减1}
    

顺序存储的定位方法

定位算法:平均时间复杂度为 O(n)

int Locate(Array arr, DataType x) {int i = 0;while ((i < arr.length) && (arr.data != x)) { //在顺序表中查找值为 x 的结点i++;}if (i < arr.length) return i + 1;//若找到值为x的元素,返回元素的序号else return 0;//未查找到值为x的元素,返回0}

求表长和读表元素算法的时间复杂度为 O(1)

线性表顺序存储的优缺点

优点

  1. 无需为表示结点间的逻辑关系而增加额外存储空间;
  2. 可以方便地随机存取表中的任一结点。

缺点

  1. ​​​​​​​插入和删除运算不方便,需要移动大量的结点;​​​​​​​
  2. 顺序表要求占用连续的空间,存储分配只能预先进行,因此当表长变化较大时,难以确定合适的存储规模。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/592260.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习|10.2 边缘检测示例 10.3 更多边缘检测

文章目录 如何在编程中实现卷积运算使用卷积实现边缘检测结果矩阵的元素正负性质的意义水平分类器如何构造卷积运算使用的矩阵 原矩阵通过一个过滤器&#xff08;filter&#xff09;/核心&#xff08;kernel&#xff09;来生成一个新的矩阵。 如何在编程中实现卷积运算 使用卷积…

Kafka安全认证机制详解之SASL_PLAIN

一、概述 官方文档&#xff1a; https://kafka.apache.org/documentation/#security 在官方文档中&#xff0c;kafka有五种加密认证方式&#xff0c;分别如下&#xff1a; SSL&#xff1a;用于测试环境SASL/GSSAPI (Kerberos) &#xff1a;使用kerberos认证&#xff0c;密码是…

Redis:原理+项目实战——Redis实战3(Redis缓存最佳实践(问题解析+高级实现))

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位大四、研0学生&#xff0c;正在努力准备大四暑假的实习 &#x1f30c;上期文章&#xff1a;Redis&#xff1a;原理项目实战——Redis实战2&#xff08;Redis实现短信登录&#xff08;原理剖析代码优化&#xff09;&#x…

golang利用alpn机制实现优先以http2协议访问服务端

文章目录 配置连接池发起请求 配置连接池 初始化http连接池 t1 : &http.Transport{Proxy: func(*http.Request) (*url.URL, error) {// 不读取HTTP_PROXY环境变量return nil, nil},DialContext: (&net.Dialer{// TCP握手超时Timeout: 3 * time.Second,// TCP协议的长…

【计算机毕业设计】SSM游戏点评网站

项目介绍 本项目分为前后台&#xff0c;前台为普通用户登录&#xff0c;后台为管理员登录&#xff1b; 管理员角色包含以下功能&#xff1a; 管理员登录,管理员管理,网站用户管理,游戏资讯管理,游戏类型管理,城市信息管理,竞技场管理,游戏信息管理,游戏评价信息管理等功能。…

【总结】请求跨域及其终极解决方案

文章目录 跨域示例浏览器的同源策略跨域访问类型跨域解决方案方案 1:允许跨域,配置 CORS自定义 Filter 实现使用 Spring 自带的 CorsFilter使用 @CrossOrigin 注解SpringMVC 全局配置Spring Cloud Gateway 配置 CORS方案 2:实现同源请求代理服务器实现同源子域与父域修改(d…

使用UDF扩展Spark SQL

Apache Spark是一个强大的分布式计算框架&#xff0c;Spark SQL是其一个核心模块&#xff0c;用于处理结构化数据。虽然Spark SQL内置了许多强大的函数和操作&#xff0c;但有时可能需要自定义函数来处理特定的数据需求。在Spark SQL中&#xff0c;可以使用UDF&#xff08;User…

视频剪辑技巧:制作视频画中画效果,背景图片的选取与运用

在视频剪辑中&#xff0c;画中画效果是一种常用的技巧&#xff0c;它可以在同一屏幕上展示两个或多个视频片段。这种效果在制作教程、比较两个物品或展示对话等场景中非常实用。现在一起来看看云炫AI智剪如何制作视频画中画效果&#xff0c;选取和运用背景图片的方法。 一起来看…

计算机网络---知识点

ARPANET----NFSNET—ANSNET—Internet发展及协议 移动互联网 物联网 无线自组网、无线传感器网络、无线个域网 ISO/OSI网络体系结构 TCP/IP网络体系结构 对等通信、PDU 电路交换、报文交换、分组报文交换 虚电路、数据报 信道复用技术 网络性能的主要指标&#xff08…

【Apache-2.0】springboot-openai-chatgpt超级AI大脑产品架构图

springboot-openai-chatgpt: 一个基于SpringCloud的Chatgpt机器人&#xff0c;已对接GPT-3.5、GPT-4.0、百度文心一言、stable diffusion AI绘图、Midjourney绘图。用户可以在界面上与聊天机器人进行对话&#xff0c;聊天机器人会根据用户的输入自动生成回复。同时也支持画图&a…

RT-Thread内核移植

目录 前言一、实验平台简介1.1 W601简介1.2 RT-Thread简介1.3 ENV简介 二、开发环境搭建2.1 MDK安装2.2 Git安装2.3 RT-Thread相关下载2.4 其他素材 三、移植RT-Thread四、ENV使用五、W601开发板下载验证5.1 使用串口下载软件5.2 ST-Link下载 前言 本文以正点原子W601开发板为例…

阿里云服务器端口PPTP 1723放行教程

阿里云服务器安装PPTP VPN需要先开通1723端口&#xff0c;阿里云服务器端口是在安全组中操作的&#xff0c;阿里云服务器网aliyunfuwuqi.com来详细说明阿里云服务器安全组开放PPTP VPN专用1723端口教程&#xff1a; 阿里云服务器放行1723端口教程 PPTP是点对点隧道协议&#…

STM32 学习(二)GPIO

目录 一、GPIO 简介 1.1 GPIO 基本结构 1.2 GPIO 位结构 1.3 GPIO 工作模式 二、GPIO 输出 三、GPIO 输入 1.1 传感器模块 1.2 开关 一、GPIO 简介 GPIO&#xff08;General Purpose Input Output&#xff09;即通用输入输出口。 1.1 GPIO 基本结构 如下图&#xff0…

kotlin isEmpty/isNotEmpty/isNullOrEmpty和isBlank/isNotBlank/isNullOrBlank

kotlin 中 isEmpty &#xff1a;如果判断的字符为空返回值返回true否则返回false 它的源码 kotlin.internal.InlineOnly public inline fun CharSequence.isEmpty(): Boolean length 0 length 0: 首先检查字符序列的长度是否为 0。如果长度为 0&#xff0c;则表明这个字…

ClickHouse(20)ClickHouse集成PostgreSQL表引擎详细解析

文章目录 PostgreSQL创建一张表实施细节用法示例 资料分享参考文章 PostgreSQL PostgreSQL 引擎允许 ClickHouse 对存储在远程 PostgreSQL 服务器上的数据执行 SELECT 和 INSERT 查询. 创建一张表 CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster] (name…

C#使用 OpenHardwareMonitor获取CPU或显卡温度、使用率、时钟频率相关方式

C# 去获取电脑相关的基础信息&#xff0c;还是需要借助 外部的库&#xff0c;我这边尝试了自己去实现它 网上有一些信息&#xff0c;但不太完整&#xff0c;都比较零碎&#xff0c;这边尽量将代码完整的去展示出来 OpenHardwareMonitor获取CPU的温度和频率需要管理员权限 在没…

回顾2023,展望2024

又是一年起始&#xff0c;在这里回顾一下过去&#xff0c;展望一下未来。今年已经是自己的本命年了&#xff0c;龙行龘龘&#xff0c;希望在自己的本位年能够有更多的努力和更多的收获。 关于工作 在无锡工作已经一个完整的年份了&#xff0c;工作上平平稳稳&#xff0c;也适应…

梯度下降法

前言&#xff1a;在均方差损失函数推导中&#xff0c;我使用到了梯度下降法来优化模型&#xff0c;即迭代优化线性模型中的和。现在进一步了解梯度下降法的含义以及具体用法。 一、梯度下降法(入门级理解&#xff09; 定义&#xff1a;梯度下降是一种用于最小化损失函数的优化…

Python爬取今日头条热门文章

前言 今日头条文章收益是没有任何门槛&#xff0c;只要是你发布文章&#xff0c;每篇文章的阅读量超过1000就能有收益&#xff0c;阅读量越多收益越高。于是乎我就有了个大胆的想法。何不利用Python爬虫&#xff0c;爬取热门文章&#xff0c;然后完成自动化发布文章呢&#xf…

专访 | STIF2023第四届国际科创节访第七在线CEO赵嘉程

12月15日&#xff0c;在STIF2023第四届国际科创节暨数服会上&#xff0c;第七在线获得年度数智化创新典范奖&#xff0c;第七在线CEO赵嘉程在颁奖典礼现场接受了媒体专访。 主持人&#xff1a;赵总&#xff0c;您好&#xff0c;欢迎您接受我们的专访&#xff0c;首先我们特别想…