【玩转408数据结构】线性表——定义和基本操作

考点剖析

        线性表是算法题命题的重点,该类题目实现相对容易且代码量不高,但需要最优的性能(也就是其时间复杂度以及空间复杂度最优),这样才可以获得满分。所以在考研复习中,我们需要掌握线性表的基本操作,在平时多进行代码练习。当然在考场上,我们并不一定要求代码具有实际的可执行性,但我们需要去清晰的表达出算法的思路步骤,且算法题目只允许使用 C/C++ 语言进行实现

线性表知识点

        关于线性表这章内容其实并不多,我们将其分为两大部分:顺序存储(也就是我们常说的顺序表)和链式存储(链表),其中对于链表部分我们需要掌握其中的 单链表、双链表、循环链表、静态链表等部分链表。

        关于线性表的内容并不是太难,我将用3-4篇文章带着大家一起了解线性表以及其实现,当我们可以自己去实现其功能的时候,我们对于该部分内容的知识掌握也就十分的熟练了,那么废话不多说,我们下面开始正式的进入线性表的学习。

线性表的定义

        线性表是具有相同数据类型的 n ( n \geq  0) 个数据元素的有限序列,其中n为表长;当n=0时,线性表为空表。在这里我们以L命名线性表,可以将其表示为:

L = (a_{1},a_{2},a_{3}, ... a_{i},a_{i+1}, ... ,a_{n})

        其中:a_{1} 是线性表的第一个元素,我们也称其为表头元素a_{n}是线性表的最后一个元素,我们称其为表尾元素。

        除了第一个元素外,每个元素有且仅有一个直接前驱(前一个元素);除了最后一个元素外,每个元素有且仅有一个直接后续(后一个元素)。当然我们也可以将“直接前驱”称为“前驱”,将“直接后续”称为“后续”。

        通过已上知识我们总结出线性表的特点如下所示:

  • 线性表元素个数有限
  • 线性表元素都是数据元素,每个元素都是单个元素
  • 线性表的元素具有逻辑上的顺序性,表中的元素有其先后次序
  • 线性表的数据类型都相同,所以其每个元素所占空间大小相同
  • 线性表的元素具有抽象性,我们讨论元素间的逻辑关系,不考虑元素究竟表示什么内容

 注:线性表是逻辑结构,表示元素一对一的相邻关系,而我们前面所了解的链表以及顺序表指的是存储结构。(也就是说线性表的顺序存储是顺序表,线性表的链式存储是链表;这两个只是在存储结构上存在差异,而其逻辑结构归根结底都是线性表)。

线性表的基本操作

        对于线性表,有一些基本操作是需要我们去学习的,至于为什么要学习这些基本操作,当然408大纲要求是要学习的,但在这里我们还是可以了解一下原因的。我们去对一些数据结构的基本操作进行封装实现,这样我们在进行复杂的操作时,可以去调用相关基本操作进行实现,并且这样进行封装也有利于减少错误的产生。

        线性表的基本操作如下所示:

InitList(&L);    //线性表的初始化
DestroyList(&L);    //销毁线性表ListInsert(&L,i,e);    //线性表的插入
ListDelete(&L,i,&e);    //线性表的删除LocateElem(L,e);    //按值查找
GetElem(L,i);    //按位查找Length(L);    //求线性表长
PrintList(L);    //按顺序输出线性表的所有值
Empty(L);    //判断线性表是否为空

(如果不懂为什么要加“&”的同学可以去学习一下,简单来说加“&”的元素我们可以修改其值,它会将其值带回来,而不加的我们在函数中修改其值是在主函数中无效的)。        

注:在这里线性表只是一种逻辑结构,我们对于其基本操作的实现是要基于存储结构的,不同的存储结构实现其功能的方法是不同的,所以对于这些基本操作的实现,我会在后面顺序表和链表的讲解中进行代码的实现,在这里我们仅对其基本操作有一个了解即可。 

小测试

  1.  线性表是一个可以存不同数据类型的n ( n \geq  0) 个数据元素的有限序列吗?
  2. 在线性表中每一个元素都有自己的前驱和后续元素吗?
  3. 不同的线性表的逻辑结构必然存在一些差异性。对吗?

答案

  1. 错,线性表需要存储相同的数据类型。

  2. 错,第一个元素不存在前驱,最后一个元素不存在后续。

  3. 错,线性表的逻辑结构是相同的。 

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

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

相关文章

Linux探秘:如何用 find 命令发现隐藏的宝藏

🌟🌌 欢迎来到知识与创意的殿堂 — 远见阁小民的世界!🚀 🌟🧭 在这里,我们一起探索技术的奥秘,一起在知识的海洋中遨游。 🌟🧭 在这里,每个错误都…

无心剑汉英双语诗《龙年大吉》

七绝龙年大吉 Great Luck in the Dragon Year 龙腾五岳九州圆 年吼佳音万里传 大漠苍鹰华夏梦 吉人天相铸奇缘 Dragon flies over five peaks watching the divine land so great and round, New Year’s call sends joyous tidal waves far across the world’s bound. The…

教师如何找答案? #知识分享#职场发展

当今社会,随着信息技术的迅猛发展,大学生们在学习过程中面临着各种各样的困难和挑战。而在这些挑战中,面对繁重的作业和复杂的题目,大学生搜题软件应运而生 1.快解题 这是一个网站 是一款服务于职业考证的考试搜题软件,拥有几千…

echarts的title标题属性

echarts的title标题属性 title 标题组件,包含主标题和副标题。 位于 option对象第一层. title.text 设置主标题内容title.subtext 设置副标题内容 在 ECharts 2.x 中单个 ECharts 实例最多只能拥有一个标题组件。但是在 ECharts 3 中可以存在任意多个标题组件&am…

【k8s系列】(202402) 证书apiserver_client_certificate_expiration_seconds

apiserver_client_certificate_expiration_second证书定义的位置:kubernetes/staging/src/k8s.io/apiserver/pkg/authentication/request/x509/x509.go at 244fbf94fd736e94071a77a8b7c91d81163249d4 kubernetes/kubernetes (github.com) apiserver_client_certi…

【Python】读写文件r,w,a六种模式简单认识

r模式,只读,不存在该文件时报错 r模式,读写,不存在该文件时报错,覆盖写 w模式,只写,不存在该文件时创建,会将文件内容清空再写 w模式,读写,不存在该文件时创建&#xff0…

代码随想录 Leetcode455. 分发饼干

题目&#xff1a; 代码(首刷看解析 2024年2月8日&#xff09;&#xff1a; class Solution { public:int findContentChildren(vector<int>& g, vector<int>& s) {sort(g.begin(), g.end());sort(s.begin(), s.end());int res 0;int index s.size() - 1…

Oracle中sql怎么判断联合索引是否生效

在Oracle中&#xff0c;判断联合索引是否生效可以通过以下几种方法&#xff1a; 执行计划&#xff08;Execution Plan&#xff09;: 当你执行一个SQL查询时&#xff0c;Oracle会生成一个执行计划&#xff0c;显示如何最有效地执行该查询。你可以使用EXPLAIN PLAN命令来查看这…

Kafka 入门介绍

目录 一. 前言 二. 使用场景 三. 分布式的流平台 四. Kafka 的基本术语 4.1. 主题和日志 &#xff08;Topic 和 Log&#xff09; 4.2. 分布式&#xff08;Distribution&#xff09; 4.3. 异地数据同步技术&#xff08;Geo-Replication&#xff09; 4.4. 生产者&#xf…

Vulnhub靶机:hacksudo-Thor

一、介绍 运行环境&#xff1a;Virtualbox 攻击机&#xff1a;kali&#xff08;10.0.2.15&#xff09; 靶机&#xff1a;hacksudo-Thor&#xff08;10.0.2.49&#xff09; 目标&#xff1a;获取靶机root权限和flag 靶机下载地址&#xff1a;https://download.vulnhub.com/…

【JAVA WEB】 css背景属性 圆角矩形的绘制

目录 背景属性设置 圆角矩形 背景属性设置 背景颜色,在style中 background-color:颜色&#xff1b; 背景图片 background-image:url(……) 背景图片的平铺方式 background-repeat: 平铺方式 repeat 平铺&#xff08;默认&#xff09;no-repeat 不平铺repeat-x 水平平铺repea…

推荐一款开源的跨平台划词翻译和OCR翻译软件:Pot

Pot简介 一款开源的跨平台划词翻译和OCR翻译软件 下载安装指南 根据你的机器型号下载对应版本&#xff0c;下载完成后双击安装即可。 使用教程 Pot具体功能如下&#xff1a; 划词翻译输入翻译外部调用鼠标选中需要翻译的文本&#xff0c;按下设置的划词翻译快捷键即可按下输…

跨域--浏览器与服务器通信过程中出现跨域问题

一、跨域产生的原因 浏览器和服务器的协议、域名、端口号只要有一个不一致&#xff0c;就会产生跨域错误。 服务器和服务器进行数据通信时&#xff0c;如果三要素不一致&#xff0c;也不会产生跨域错误。 跨域的限制是浏览器的限制&#xff0c;与服务器无关。 跨域是一个安全策…

HiveSQL——共同使用ip的用户检测问题【自关联问题】

注&#xff1a;参考文章&#xff1a; SQL 之共同使用ip用户检测问题【自关联问题】-HQL面试题48【拼多多面试题】_hive sql 自关联-CSDN博客文章浏览阅读810次。0 问题描述create table log( uid char(10), ip char(15), time timestamp);insert into log valuesinsert into l…

Gradle IDEA 乱码

文章目录 环境代码测试结果配置 JAVA_TOOL_OPTIONS配置 build.gradle.kts配置 idea64.exe.vmoptions无配置 总结问题链接 环境 Java 环境 java version "21.0.2" 2024-01-16 LTS Java(TM) SE Runtime Environment (build 21.0.213-LTS-58) Java HotSpot(TM) 64-Bit…

MySQL进阶查询篇(7)-触发器的创建和使用

MySQL数据库触发器的创建和使用 触发器(Trigger)是MySQL数据库中非常强大且有用的功能&#xff0c;它可以在特定的数据库事件发生时自动执行一段预定义的代码。触发器可以用于实现数据完整性约束、自动化业务逻辑、审计日志等功能。本文将介绍MySQL数据库中触发器的创建和使用…

秒杀相关问题解决

秒杀 超卖问题 如下,我们先来复现问题,抢购秒杀券的代码逻辑也是很简单, 先判断优惠券是否开始了,是的化,判断库存是否充足,如果是的化,扣减库存,最后创建订单 如下是代码 Override Transactional public Result seckillVoucher(Long voucherId) {//1.查询优惠券SeckillVo…

平台工程是 FinOps 的“黄金路径”

云成本催生出了各种工具集。这些工具集目前主要用于现代 IT 堆栈&#xff0c;以加强资源、减少浪费、优化已确定的效率&#xff0c;并在最高、最广和最广泛的层面上监控系统的运行状况。 在云计算环境中&#xff0c;MLOps 实践的兴起旨在使软件工程与运维工程保持一致&#xff…

Linux 命令行的世界 :3.探索操作系统

既然我们已经知道了如何在文件系统中跳转&#xff0c;是时候开始 Linux 操作系统之旅了。然而在开始之前&#xff0c;我们先学习一些对研究Linux 系统有帮助的命令。 ls —列出目录内容 file —确定文件类型 less —浏览文件内容 ls 可能是用户最常使用的命令了&#xff0c;这…

double精度丢失问题

前言 在Java中&#xff0c;使用double类型时可能会遇到精度丢失的问题。这是由于double类型是一种浮点数类型&#xff0c;在表示某些小数时可能会存在精度损失。这种情况通常是由于浮点数的二进制表示法无法准确地表示某些十进制小数&#xff0c;导致精度丢失。 为了避免这种问…