首页 > 其他分享 >线性表(1)定义和操作

线性表(1)定义和操作

时间:2023-10-11 15:44:24浏览次数:113  
标签:存储 线性表 元素 定义 逻辑 操作 结构

线性表(1)定义与操作

定义

线性表描述的是一种逻辑结构,线性表中的元素具有线性的逻辑关系,这里的线性具体就体现在:

线性表中的每一个元素,除了第一个元素,其他元素都有唯一前驱;除了最后一个元素,其他元素都有唯一后继。

可以说,这里的前驱和后继的概念就是描述了线性表的线性性,形象一点的,每一个元素和其前驱以及后继相连,这样子连起来,就是一条线,于是我们叫它线性表。

线性表除了线性性,还有两个其他的重要性质:相同类型,有限。这里要求线性表中的元素具有相同类型(当然也可以是结构体这样的复合类型),并且元素的个数是有限的。

总结起来,线性表就是相同类型,有限,有序。这里的有序指的就是线性性,线性性的前驱和后继就暗含了一种顺序,某某元素的前驱在该元素的前面,某某元素的后继在该元素的后面。

逻辑结构和存储结构

这里我们要区分两个概念,逻辑结构和存储结构。我们说线性表是一种逻辑结构,那么什么是逻辑结构呢?逻辑结构描述了数据元素之间的逻辑关系,比如线性表中的元素具有线性的逻辑关系,无向图的元素之间有相邻/不相邻这样的逻辑关系。与存储结构相对应的,还有一个概念是存储结构。存储结构描述了逻辑结构在计算机内存中的存储方式。

上面的说法很抽象,不过没关系,我们举个例子,对于图这个逻辑结构,其概念只涉及了图中的数据以及数据之间的关系,而邻接表这个存储结构则涉及到了数据以及数据之间的关系的表示,在邻接表中我们需要考虑怎么表示点,怎么表示边(也可以看作点之间的关系),因此逻辑结构和存储结构最大的区别就是,是否涉及数据和数据关系的表示,比如用第\(i\)个链表表示第\(i\)个点,而第\(i\)个链表中的元素表示与第\(i\)个点相邻的点(也就是点之间的关系)。

总结来说,区分这两个概念的关键就在于是否涉及表示.

操作

总结起来,一共有这几个基本操作:创建销毁,增删查改

  1. InitList(&L):该操作对表进行初始化。
  2. DestoryList(&L):该操作销毁一个表,并释放表的空间。
  3. ListInsert(&L, i, e):在第\(i\)个位置插入元素\(e\)。
  4. ListDelete(&L, i, &e):删除第\(i\)个位置的元素,并用\(e\)返回被删除的元素。
  5. LocateElem(L, e):查找值为\(e\)的元素的位置,是按值查找。
  6. GetElem(L, i):查找第\(i\)个位置的元素,是按位查找。
  7. 至于改这个操作,可以先定位要删除的元素,再删除该元素,最后再相同的位置插入想要改成的元素,这样等效于一个修改操作。

至于其他的还有用于获取表长、打印表、判空等操作。

什么时候是引用

注意到上面这些操作的参数,有些是引用,有些则不是,主要还是看哪些操作需要修改表的内容。

上面的初始化和销毁肯定是需要修改表的,而插入,删除,改变了表的元素,自然也是需要传入引用。而查找/定位元素的操作,则不需要修改表本身,只需传入表的形参就可以了。

参考资料

  • [1] 王道数据结构考研复习指导

标签:存储,线性表,元素,定义,逻辑,操作,结构
From: https://www.cnblogs.com/5yi33/p/17757346.html

相关文章

  • Ubuntu使用教程:轻松掌握Linux操作系统
    今天要和大家分享一份Ubuntu使用教程,帮助大家快速掌握这个功能强大、易于上手的Linux操作系统。无论是对于新手还是已有一定Linux基础的用户,这篇教程都将提供清晰的步骤和详细的内容,让您轻松上手Ubuntu。第一步:安装Ubuntu1.从Ubuntu官网下载适合您的版本(如最新的Ubuntu20.04LTS版......
  • C#(7):操作符详解
    使用default操作enum类型时,最好将一个选项赋值为0设计模式:依赖注入模式,将紧耦合调至松耦合checked{}检测溢出unchecked不检测delegate声明匿名变量,不常用unsafe声明不安全变量&取地址操作符,*取引用符号,等同(*pStu).scorec#中所有数据类型都由object所派生,,任何......
  • Linux操作系统 no.1
    一.基本指令:  目录操作1.创建目录  mkdir2.查看目录  pwd3.删除目录  rmdir 文件操作1.创建文件  touch2.查看文件  cat3.显示文件内容  more4.对文件进行分页输出  less5.查看文件头几行  head6.查看文件后几行  tail7.指定查找 ......
  • NAS之间docker无损数据怎么迁移,无需代码操作,简简单单。
    情况:你一定遇到过这么一个棘手的问题,在群晖上自己配置或者是请人配置的docker应用,想换群晖或者转移应用一定想知道怎么样才能无损迁移docker应用。我也比较爱折腾,docker通常也设置好了。一但换了机器docker迁移就很麻烦,文档资料倒是可以复制过去就行,docker不能直接复制,复制后会......
  • openpyxl基本操作
    fromopenpyxl.stylesimportFont,PatternFill,Border,Side,Alignment,Protectionfromopenpyxl.stylesimportnumberswb=Workbook()ws=wb.activews.cell(row=1,column=1,value='宋体').font=Font(name=u'宋体',size=12,bold=True,col......
  • Qt_C++读写NFC标签Ntag支持windows国产linux操作系统
    本示例使用的发卡器:ntag2标签存储结构说明#include"mainwindow.h"#include"./ui_mainwindow.h"#include<QDebug>#include"QLibrary"#include"QMessageBox"//本示例可在windows、linux系统内编译、运行//判断windows、linux系统,声明动态库函数---------------......
  • 操作系统的概述
    操作系统(OperatingSystem,简称OS)简单通俗来讲就是一款软件。不过和一般软件不同,操作系统是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件。任何其他软件都必须在操作系统的支持下才能运行。Linux也是众多操作系统之一,要想知道Linux是什......
  • Linux p3 远程操作Linux
    【学习课程】:【【小白入门通俗易懂】2021韩顺平一周学会Linux】https://www.bilibili.com/video/BV1Sv411r7vd/?p=14&share_source=copy_web&vd_source=2c07d62293f5003c919b2df9b2e0549e远程操作Linux为什么需要远程登录Linux?Linux服务器是开发小组共享的正式上线的......
  • Linux命令行基本操作
    本例要求熟悉新装LINUX系统中命令行界面的获取方法,并通过命令行完成下列任务:pwd、cd、ls命令练习路径练习路径切换练习cat命令练习less命令练习hostname命令练习显示CPU与内存查看IP地址创建数据练习查看部分文件内容过滤文件内容vim文本编辑器关机与重启简单命令......
  • delphi 自定义光标
    自定义光标代码使用图像的方式你可以使用两个位图(一个用于普通图像,一个用于遮罩图像)来创建图标,并将其手动加载到Cursors属性使用完自定义光标后要调用WindowsAPI函数DestroyIconconstcrMyCursor=5;procedureTForm1.Button1Click(Sender:TObject);varbmpMas......