线性表的逻辑结构

news2024/11/14 23:54:11

 

归纳编程学习的感悟,
记录奋斗路上的点滴,
希望能帮到一样刻苦的你!
如有不足欢迎指正!
共同学习交流!
🌎欢迎各位→点赞 👍+ 收藏⭐ + 留言​📝
     只有靠自己的毅力忍耐,静心思考和付出,才迎来七彩的阳光,幸福它包围着我!

一起加油!

目录

一、前言:

二、线性表的定义:

三、线性表的基本运算: 

四、说明:

五、总结: 

六、共勉: 


一、前言:

        线性表是一种最简单、最基本、最常用的数据结构,几乎所有的线性关系都可以用线性表来表示。线性表是一种线性结构,线性结构的特点是数据元素之间具有一对一的线性关系,数据元素“一个接一个地排列”。因此,线性表可以想象为一种数据元素的序列。线性表有顺序存储链式存储两种存储方法,基本运算包括插入、删除和查找等。

二、线性表的定义:

         线性表 (Linear List)是一种线性结构。在一个线性表中数据元素的类型是相同的,或者说线性表是由同一类型的数据元素构成的线性结构

        线性表是具有相同数据类型的 n (n>0) 个数据元素的有限序列,通常记为:

( a1, a2,…, ai-1, ai, ai+1,..., an)

其中n为表长,当n=0时称该线性表为空表。

·        表中相邻数据元素之间具有前后次序关系。将 ai-1 称为 ai的直接前趋,ai+1称为 ai的直接后继。即对于ai当i=2,…,n时,有且仅有一个直接前趋ai-1;当i=1,2,…,n-1时,有且仅有一个直接后继 a1。而a1是表中第一个数据元素,它没有前趋;an是最后一个数据元素,它无后继。需要说明的是:ai为序号为i的数据元素(i= 1,2,…,n).

三、线性表的基本运算: 

        数据结构中的数据元素的运算是定义在逻辑结构层次上的,而运算的具体实现是建立在存储结构上的,因此下面定义的线性表的基本运算作为逻辑结构的一部分,每一种运算的具体实现只有在确定了线性表的存储结构之后才能完成。
线性表上的基本运算有以下几种。
 💦线性表初始化: Init_List(L)。 

        ✨初始条件:线性表L不存在。
        ✨运算结果:构造一个空的线性表 L。

 💦求线性表的长度:Length_List (L)。
        ✨初始条件:线性表L存在。
        ✨运算结果:返回线性表中所含数据元素的个数。

💦取表元: Get_List(L,i)。
        ✨初始条件:线性表 L存在且1<=i<=Length_List(L)。
        ✨运算结果: 返回线性表 L 中第i个数据元素的值或地址。

💦按值查找: Locate_List(L,x)。
        ✨初始条件:线性表 L 存在,x 是给定的一个数据元素。

       ✨运算结果: 在线性表 L 中查找值为x的数据元素,其返回结果在线性表 L中首次出现的值为x的那个数据元素的序号或地址,称为查找成功;否则,在线性表 L 中未找到值为x的数据元素,返回一个特殊值表示查找失败。

💦插入运算: Insert_List (L,i, x)。
        ✨初始条件: 线性表 L存在,插入位置正确(1<=i<=n+1,n 为插入前的表长)。
        ✨运算结果:在线性表L的第i个位置上插入一个值为x的新数据元素,这样使原序号为i,i+1,...,n 的数据元素的序号变为i+1,i+2,...,n+1,新表长=原表长+1。

💦删除运算: Delete_List (L,i)。
        ✨初始条件:线性表 L 存在,1<=i<=n。

        ✨运算结果:在线性表 L中删除序号为 i的数据元素,使原序号为 i+1,i+2,…,n 的数据元素的序号变为 i,i+1,..,n-1,新表长=原表长-1。

四、说明:

        需要说明以下几点:

🔑数据结构上的基本运算不是它的全部运算,而是一些常用的基本运算,每一个基本运算在实现时也可能根据不同的存储结构派生出一系列相关的运算。例如,线性表的查找在链式存储结构中还有按序号查找;再如,插入运算,可能是将新数据元素插入到某一数据元素之前,也可能是将新数据元素插入到某一数据元素之后,还可能是将新数据元素插入到其他适当的位置,等等。不可能也没有必要全部定义出一种数据结构的运算集,掌握了某一数据结构上的基本运算后,其他运算可以通过基本运算来实现,也可以直接去实现。
🔑在上面各种运算中定义的线性表 L 只是一个在逻辑结构层次上抽象的线性表,尚未涉及它的存储结构,因此每种运算在逻辑结构层次上尚不能用具体的程序设计语言写出具体的算法,其算法只有在存储结构确立之后才能用具体程序设计语言实现。

🔑 正因为这些运算仅是逻辑上的说明,因此以上用来定义运算的函数中所列的参数的数据类型并不明确说明,只是隐含在函数说明中,对于参数的传递方式也不予考虑,这是因为只有在涉及具体实现时才需要明确其参数的数据类型和传递方式

五、总结: 

 线性表是一种最简单、最基本、最常用的数据结构

在一个线性表中数据元素的类型是相同的

线性表上的基本运算有以下几种:线性表初始化,求线性表的长度,取表元,按值查找,插入运算,删除运算

数据结构上的基本运算不是它的全部运算,而是一些常用的基本运算,每一个基本运算在实现时也可能根据不同的存储结构派生出一系列相关的运算

在上面各种运算中定义的线性表 L 只是一个在逻辑结构层次上抽象的线性表,尚未涉及它的存储结构

只有在涉及具体实现时才需要明确其参数的数据类型和传递方式

六、共勉: 

        以上就是我对线性表的逻辑结构的理解,希望本篇文章对你有所帮助,也希望可以支持支持博主,后续博主也会定期更新学习记录,记录学习过程中的点点滴滴。如果有不懂和发现问题的小伙伴,请在评论区说出来哦,同时我还会继续更新对线性表的理解,请持续关注我哦!!! 

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

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

相关文章

详解混合整数二次规划 (MIQP) 投资组合优化问题--附Matlab和Python实现

&#x1f517; 运行环境&#xff1a;Matlab、Python &#x1f6a9; 撰写作者&#xff1a;左手の明天 &#x1f947; 精选专栏&#xff1a;《python》 &#x1f525; 推荐专栏&#xff1a;《算法研究》 #### 防伪水印——左手の明天 #### &#x1f497; 大家好&#x1f917;&am…

sqli-labs靶场详解(less11-less16)

目录 less-11 less-12 less-13 less-14 less-15 less-16 提交参数后 动态参数不存在url中 存在于post表单中 于是在表单中进行注入点测试 先看一看这种提交数据的关卡输入提交后会有什么反应 unameadmin&passwdadmin&submitSubmit 输出 usernameadmin passwordadmin un…

基于mpvue实现的cnode社区demo(附精选源码32套,涵盖商城团购等)

社区类目没有开放给个人开发者&#xff0c;所以没能上线。 预览 项目配置文件&#xff0c;更改appid {"description": "项目配置文件","setting": {"urlCheck": true,"es6": false,"postcss": false,"minif…

万字+28张图带你探秘小而美的规则引擎框架LiteFlow

大家好&#xff0c;今天给大家介绍一款轻量、快速、稳定可编排的组件式规则引擎框架LiteFlow。 一、LiteFlow的介绍 前言 在每个公司的系统中&#xff0c;总有一些拥有复杂业务逻辑的系统&#xff0c;这些系统承载着核心业务逻辑&#xff0c;几乎每个需求都和这些核心业务有关&…

触控板窗口管理软件Swish mac中文版

Swish mac是一款触控板窗口管理工具&#xff0c;它允许用户通过简单的手势来控制窗口。Swish利用MacBook的触控板&#xff0c;使得用户可以更加便捷地管理窗口。它支持多种手势&#xff0c;例如捏合、拖动、放大和缩小等&#xff0c;使得用户可以轻松地实现窗口的切换、最小化、…

代码随想录-刷题第十天

459. 重复的子字符串 题目链接&#xff1a;459. 重复的子字符串 提示&#xff1a;Java中转为字符数组&#xff0c;不使用charAt()&#xff0c;效率会更高。 思路1&#xff1a;暴力解法。起始下标从0开始&#xff0c;第一个for循环寻找子串的结束位置。只需要遍历到中间位置&…

代码随想录训练营第30天 | 332.重新安排行程、51. N皇后、37. 解数独

332.重新安排行程 题目链接&#xff1a;重新安排行程 解法&#xff1a; 这个题&#xff0c;卡哥的思路会超时。辛辛苦苦看懂了卡哥的思路&#xff0c;结果超时了&#xff0c;直接崩溃。 看了leetcode官方的思路&#xff0c;非常简洁&#xff0c;但是里面的深意还是不太懂。 由…

Python实现WOA智能鲸鱼优化算法优化LightGBM分类模型(LGBMClassifier算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 鲸鱼优化算法 (whale optimization algorithm,WOA)是 2016 年由澳大利亚格里菲斯大学的Mirjalili 等提…

Linux常用命令——batch命令

在线Linux命令查询工具 batch 在系统不繁忙的时候执行定时任务 补充说明 batch命令用于在指定时间&#xff0c;当系统不繁忙时执行任务&#xff0c;用法与at相似。 语法 batch(选项)(参数)选项 -f&#xff1a;指定包含具体指令的任务文件&#xff1b; -q&#xff1a;指定…

【论文阅读笔记】InstructDiffusion: A Generalist Modeling Interface for Vision Tasks

【论文阅读笔记】StyleAvatar3D: Leveraging Image-Text Diffusion Models for High-Fidelity 3D Avatar Generation 论文阅读笔记论文信息引言动机挑战 方法结果 关键发现相关工作1. 视觉语言基础模型2. 视觉通用模型 方法/模型视觉任务的统一说明训练数据构建网络结构 实验设…

扫地机器人市场持续火爆,景联文科技数据采集标注方案助力扫地机器人智能化升级

随着消费者对智能家居和清洁卫生的需求增加&#xff0c;扫地机器人市场规模不断扩大。市场竞争也日益激烈&#xff0c;各品牌都在努力提升产品性能和服务质量&#xff0c;以获取更大的市场份额。 IDC的统计数据显示&#xff0c;今年双十一前两周&#xff08;2023年10月23日至20…

u盘打不开,提示需要格式化怎么办

U盘作为一种常见的便携式存储设备&#xff0c;被广泛应用于生活和工作中。然而&#xff0c;有时当我们尝试打开U盘时&#xff0c;会出现提示需要格式化的错误信息&#xff0c;这是一种常见的故障。造成这种故障的原因可能包括U盘文件系统错误、病毒感染、物理损坏等。为了解决这…

Python网络爬虫练习

爬取历年中国大学排名(前20名)&#xff0c;并随机选取一所高校画图展示其历年总分变化,并计算平均分&#xff0c;在图上展示该平均分直线&#xff1a; 代码如下&#xff1a; import matplotlib.pyplot as plt import pandas as pd import requests import randomdef main(yea…

如何在C/C++中测量一个函数或者功能的运行时间(串行和并行,以及三种方法的实际情况对比)

本文算是一个比较完整的关于在 C/C 中测量一个函数或者功能的总结&#xff0c;最后会演示三种方法的对比。 最常用的clock() 最常用的测量方法是使用clock()来记录两个 CPU 时间点clock_t&#xff0c;然后做差。这个方法的好处在于非常简单易写&#xff0c;如下&#xff08;第…

语音机器人的两种常见业务场景

第一个业务场景 之前写过一篇语音机器人是真人录音好&#xff0c;还是TTS转语音更好的文章。今天再来说一说TTS一个很细微的场景。 假设一句话 这里是*****银行委托机构&#xff0c;您在*****银行的信用卡长期逾期至今仍未依照约定履行还款义务&#xff0c;为避免逃废债给您…

vue3父子组件通过$parent与ref通信

父组件 <template><div><h1>ref与$parents父子组件通信 {{ parentMoney }}</h1><button click"handler">点击我子组件的值会减20</button><hr><child ref"children"></child></div> </te…

vue3+ts 指令简写

<template><div class"btns"><button v-has-show"shop:create">创建</button><button v-has-show"shop:edit">编辑</button><button v-has-show"shop:delete">删除</button></div…

如何在Linux中安装和使用dig工具

Dig 命令&#xff08;Domain Information Groper&#xff09;是最流行的 DNS 测试工具之一。您可以用它来在Linux上排查DNS问题。 文章目录 dig如何工作如何在Ubuntu上安装dig常用dig命令使用方法推荐阅读 dig如何工作 "dig"命令是一个用于查询DNS&#xff08;Doma…

IDEA 2022.1 同一个 spring boot main类运行多个实例

普通的 Java 项目 运行多个实例是非常简单的&#xff0c;直接点击 run 多次即可&#xff0c;但在 spring boot 中默认情况下&#xff0c;是不允许把同一个 web 项目改完端口后多次运行的&#xff0c;如下会显示让你先停止当前实例后再启动&#xff1a; 开启运行多个实例的的方法…

Node.js入门指南(五)

目录 MongoDB 介绍 下载与启动 命令行交互 Mongoose 代码模块化 图形化管理工具 hello&#xff0c;大家好&#xff01;上一篇文章我们介绍了express框架&#xff0c;这一篇文字主要介绍MongoDB。来对数据进行存储以及操作。 MongoDB 介绍 各位小伙伴应该多多少少都有接…