<<数据结构与算法>>---笔记(2) --- 线性表顺序表示

数据结构与算法 学习笔记(陈越) 数据机构c语言版本-陈越笔记*第一章*(数据结构和算法)数据结构算法 第一章(数据结构和算法) 数据结构 官方定义-没有统一 解决问题的方法效率,跟数据的组织方式有关 空间的使用 解决问题的方法效率,跟空间的利用率有关 算法的效率 解决问题的方法效率,跟算法的巧妙程度有关 抽象数据类型 算法 定义 1.一个有限指令集 2.接收一些输入 3.产生输出 4.在一定有限步骤后结束 5.每一条指令必须有充分明确的目标,不可以有歧义,在计算机处理范围内,描述不依赖于任何一种计算机语言以及具体的实现手段 算法的 阅读详情

上一章总结:

                


什么是线性表?(或者说线性表的定义是什么?)

线性表 是具有相同特性的数据元素的一个有限序列

 

 同一线性表中的元素必定具有相同特性,  数据元素间的关系是线性关系

线性表的逻辑特征是什么?

1.在非空的线性表, 有且仅有一个开始结点a1, 它没有直接前趋, 而仅有一个直接后继 a2

2. 有且仅有一个终端结点 an ,他没有直接后继, 而仅有一个直接前趋a n-1

3. 其余的内部结点 ai( 2<=i<=n-1) 都有且仅有一个直接前趋 ai-1 和一个直接后继 ai+1

线性表是一种典型的线性结构

顺序存储存在那些问题?

1) 存储空间分配不灵活

2) 运算的空间复杂度高

微总结:

线性表中数据元素的类型可以分为简单类型, 也可以为复杂类型

许多实际应用问题所涉的基本操作有很大相似性, 不应为每个具体应用单独编写一个程序

从具体应用中抽象出共性的逻辑结构和就基本操作(抽象数据类型) ,  然后实现其存储结构和基本操作


在线性表的基本操作具体指的是什么?

InitList(&L)   (Initialization List)

操作结果: 构造一个空的线性表L

DestroyList(&L)

初始条件: 线性表L已经存在.

操作结果: 销毁线性表L

ClearList(&L)

初始条件: 线性表L已经存在

操作结果: 将线性表L重置为空表

ListEmpty(L)

初始条件: 线性表L已经存在

操作结果: 若线性表L为空表., 则返回TURE; 否则返回FALSE.

ListLength(L)

初始条件: 线性表L已经存在

操作结果: 返回线性表L中的数据元素个数

GetElem(L, i, &e);

初始条件: 线性表L已经存在, compare()是数据元素判定函数

操作结果: 用e返回线性表L中第i个数据元素的值

LocateElent(L, e, compare())

初始条件: 线性表L已经存在, compare()是数据元素判断函数

操作结果: 返回L中第1个与e满足compare()的数据元素的位序. 若这样的数据元素不存在则返回值为0 

PriorElem(L, cur_e, &pre_e)

   初始条件: 线性表L已经存在

    操作结果: 若cur_e是L的数据元素, 且不是第一个, 则用pre_e返回它的前趋否则操作失败; pre_e无意义

NexyElem(L, cur_e, &next_e)

    初始条件: 线性表L已经存在

    操作结果: 若cur_e是L的数据元素, 且不是第最后一个元素, 则用next_e返回它的后继, 否则操作失败, nexy_e无意义

ListLnsert(&L, i, e)

       初始条件: 线性表已经存在, 1<=i<=ListLength(L)+1

        操作结果: 在L的i个位置之前插入新的数据元素e, L的长度加一

ListTraverse(&L, visited())

        初始条件:线性表L已经存在

        操作结果:依次对线性表中每个元素调用visited()

以上的运算时逻辑结构上定义的运算, 是给出了运算的功能是"做什么"   ,  至于 "如何做"等实现细节,  只有待确定了存储结构之后才考虑


线性表的顺序表示和实现具体指的是什么?

线性表有两种基本的存储结构:  1) 顺序存储结构     2) 链式存储结构

线性表内的逻辑结构: 除了第一个元素没有前趋和最后一个元素没有后继, 任意一个元素 都有且只有一个前趋,一个后继


线性表的顺序表示 也可以称为 顺序存储结构 或者是 顺序映像

顺序存储定义: 把逻辑上相邻的数据元素存储在物理上相邻的存储单元中的存储结构

总之就是: 在逻辑上相邻, 则在物理上也相邻

线性表的 第一个 数据元素a1的存储位置, 我们可以将其称作 起始地址或基地址

注意: 

1) 要依次存储, 地址连续----中间没有空除的存储单元   则是一个典型的线性表顺序存储结构

2)地址不连续---中间存在空的存储单元  则不是一个线性表顺序存储结构

线性表顺序存储结构占用一片连续的存储空间,. 知道某个元素的存储位置就可以计算其他元素的存储位置

其中的 L为每个元素需要占 L 个存储单元


 顺序表的特点:  以物理位置相邻表示逻辑关系.  任一元素均可随机存取(优点)

 顺序表可以用一维数组表示顺序表

线性表长可变 (删除)

数组长度不可动态定义

 上述代码 是线性表定义的一个模板


 

C++中的参数传递

函数调用时传送个给形参表的实参必须与形参三个一致

          类型   个数    顺序

参数传递有两种方式

        传值方式 (参数为整型, 实型, 字符型等)

        传地址

                参数为指针变量

                参数为引用类型

                参数为数组名

当数组名作为参数   实际上是传递的是数组的首地址

对形参数组所作的任何改变都将反映到实参数组中

传地址方式 --- 引用类型作参数

什么是引用?

引用: 它用来给一个对象提供一个替代的名字

引用类型作形参的三点说明   (引用形使用的较多)

1) 传递引用给函数与传递指针的效果是一样的, 形参变化实参也发生变化 

2) 引用类型作形参, 在内存中并没有产生实参的副本, 它直接对形参操作; 而一般变量作为参数, 形参与实参就占用不同的存储单元, 所以形参变量的值是实参变量的副本. 因此, 当参数传递的数据量较大时, 用引用比用一般变量传递参数的时间和空间效率都好

3) 指针参数虽然也能达到与使用引用的效果, 但在被调函数中需要重复使用 " *指针变量名 " 的形式进行运算, 这很容易产生错误且程序的阅读性较差; 另一方面, 在主调函数的调用点除, 必须用变量的地址作为实参


 为了表达 线性表的顺序存储 我们需要 elem和length 这两个部分 放在一起共同来表达 这个顺序表(Squence List)

其中的逻辑结构与存储结构之间相差1   即   逻辑位序和物理位序相差1


 

 

 

顺序表上的查找操作

在线性表L中查找与指定值e相同的数据元素的位置

从表的一端开始, 逐个进行记录的关键字和给定值的比较. 找到, 返回该元素的位置符号 , 未找到, 返回0;

顺序表的查找算法分析是什么? 

        顺序表的查找算法分析: 

平均查找长度 ASL (Average Search Length):

        为确定记录在表中的位置, 需要与给定值进行比较的关键字的个数的期望值叫做查找算法的平均查找长度


什么是顺序表的插入?

        线性表的插入运算是指在表的第 i (1<=i <= n+1) 个位置上, 插入一个新节点 e , 使长度为 n 的线性表 (a1, ...., a1-1, ...., an)变成长度为 n+1 的线性表 (a1, ..., ai-1, e, ai, ..., an)

        算法思想:

        1. 判断插入位置 i 是否合法

        2. 判断顺序表的存储空间是否已满, 若已满返回 ERROR

        3. 将第n至第i位的元素依次向后移动一个位置, 空出第 i 个位置.

        4.将要插入的新元素e 放入第i个位置

        5. 表长加1, 插入成功返回 OK


什么是顺序表的删除?

顺序表的删除

        线性表的删除运算是指将表的第 i (1<=i<=n) 个结点删除

        使长度为n的线性表

        变成长度为n-1的线性表

算法思想:

        1.判断删除位置i是否合法 (合法值为 1<=i<=n)

        2.将欲删除的元素保留在 e 中

        3.将第 i+1 至 第 n位的元素依次向前移动一个位置

        4. 表长减1, 删除成功返回 OK

若要考虑在各种位置删除 (共 n 种可能) 的平均移动次数, 该如何计算?

平均移动次数 =  (n-1) / 2       数量级 也是 O(n)

数据结构与算法(1)线性表的顺序存储结构 转专业到计算机,最近在努力的提高自己的编程能力。数据结构与算法可以说是程序员的内功心法,我也下定决心学好这项内容,因此准备写下这一路的体会。一来鞭策自己不要中途懈怠、半途而废,二来以备将来查看方便。在博客中如果出现错误的话,还望各路大侠不吝赐教 O(∩_∩)O1 线性表1.1 概念 线性表是最为简单且常见的数据类型,满足线性结构: 存在唯一的第一个数据元素 存在唯一的最后一个元素 除第一个 阅读详情

相关推荐

数据结构线性表笔记

①相同数据类型的数据元素;②有限;③序列。线性表是具有相同数据类型的n(n≥0)个数据元素的有限序列,其中n为表长,当n=0时线性表是一个空表。若用L命名线性表,则其一般表示为La1a2aiamanLa1​a2​,,ai​am​,,an​式中,a1是唯一的“第一个”数据元素,又称表头元素;a是唯一的“最后一个”数据元素,又称表尾元素。除第一个元素外,每个元素有且仅有一个直接前驱。

qq_57150628的博客 1180

数据结构------------线性表之顺序表(详细教学)

顺序表的详细实现

qiuqiushuibx的博客 294

Java数据结构与算法-线性表(详细实现)

线性表(Linear List) 2.1 什么是线性表 零个或多个数据元素的有限序列。 非空线性表的逻辑结构特征 有且仅有一个开始结点,无直接前趋,有且只有一个直接后继 有且仅有一个结束结点,有且只有一个直接前趋,无直接前驱。 内部结点都有且只有一个直接前趋和一个直接后继 对于同一线性表,数据类型一直,数据元素长度一致。 2.2 线性表基本运算 基本运算包括 initList 初始化操作,建立一个空的线性表 listEmpty 若线性表为空,返回true,否则返回false

qq_41649001的博客 3803

数据结构与算法笔记第2章 线性表 顺序表示

2.1 线性表的定义和特点 定义:线性表是具有相同特性的数据元素的一个有限序列; ai-1,ai,ai+1 中ai-1为直接前趋ai+1为直接后继; 线性表是典型的线性结构; 2.2 案例引入 一元多项式表示,记作 Pn(x)=p0+p1x+p2x2+…+pnxn,其中设定指数为 i 系数为 pi例如:P(x)=10+5x-4x2+3x3+2x4 表示为 一元多项式的运算:实现两个多项式加,减,乘运算;运算原理是分别从头遍历比较存放一元多项式的两个数组a和b的每一项,指数相同则相加存放在新数组中,指

qq_45459526的博客 571

【数据结构入门】2.4线性表的顺序表示和实现(持续更新ing)

本文介绍了线性表的顺序表示和实现,重点讲解了顺序存储结构的定义、存储位置计算公式、结构表示及其优缺点。顺序存储结构通过物理位置的相邻性表示逻辑关系,具有存储密度大、支持随机访问等优点,但也存在插入删除操作复杂、空间不易扩展等缺点。文章还以多项式和图书表为例,展示了顺序存储结构的具体应用,并提供了相关的代码示例和思维导图资源,帮助读者更好地理解和学习线性表的顺序存储实现。

2504_92024050的博客 2373

多孔材料吸附性质模拟程序RASPA的离线和在线安装方法

RASPA-2.0是今年美国西北大学教授Randall Q. Snurr等人开发的针对于MC,MD,分子力学优化等用途的程序,相比于之前开发的MUSIC软件,RASPA的功能更加齐全,操作更加简便,可以在MC的吸附过程中考虑骨架的柔性,也可以想MUSIC一样先制作积分格点(music中的map)。 A、离线安装(centos为例): (1)、安装之前要检查一下是否装了automake,

youyno的博客 1万+

《数据结构与算法基础 by王卓老师》学习笔记——2.4线性表的顺序表示和实现2

1.线性表顺序存储结构的图示 2.顺序存储表示 3.举例

m0_55841508的博客 237

3D高斯泼溅实战:如何用自采数据集训练出高质量3D模型(附COLMAP避坑指南)

本文详细介绍了使用自采数据集训练高质量3D高斯泼溅模型的完整实战流程。从数据采集规范、COLMAP稀疏重建的深度配置与避坑指南,到数据格式转换及3DGS训练调优策略,提供了针对自采数据的关键参数调整与问题排查方案,帮助读者高效构建专属3D场景。

g9h0i1的博客 977

《数据结构与算法基础 by王卓老师》学习笔记——2.4线性表的顺序表示和实现3

线性表的顺序表示和实现3

m0_55841508的博客 428

显示模组Bonding IC气泡问题的诊断与优化策略

本文深入分析了显示模组Bonding IC气泡问题的成因与优化策略,涵盖IC两端剥离气泡、彩虹状水汽气泡、电极下方无规律气泡及IC输入端气泡等类型。通过工艺参数优化、材料存储处理、清洁环境控制及维修品特殊处理等多维度解决方案,有效降低气泡不良率。同时介绍了纳米改性ACF材料、激光辅助排泡技术等前沿解决方案,为触控显示行业提供实用参考。

weixin_26805597的博客 420

ROS2机械臂MPC轨迹规划实战:从MoveIt 2插件配置到参数调优全流程

本文详细介绍了ROS2机械臂MPC轨迹规划的全流程,从MoveIt 2插件配置到参数调优。通过模型预测控制(MPC)技术,实现高精度运动控制,特别适合复杂装配任务。文章包含环境搭建、插件部署、参数设计及实战调优方法,帮助开发者快速掌握ROS2机械臂的MPC轨迹规划技术。

i0j1k2l3m的博客 206

《数据结构与算法基础 by王卓老师》学习笔记——2.4线性表的顺序表示和实现1

线性表的顺序存储表示、顺序存储结构和存储位置的计算

m0_55841508的博客 289

深入解析达梦数据库核心技术:检查点、redo、undo、MVCC与内存缓存刷盘

MVCC 依赖 undo 日志:通过 undo 日志构建版本链,实现 “读不加锁”;刷盘依赖检查点:检查点批量清理脏页,redo 日志通过检查点释放空间;日志保障刷盘安全:redo 日志先行写入,确保未刷盘脏页可恢复;刷盘优化 MVCC 性能:优先刷冷区脏页,减少对高频访问数据的影响。例如,一个完整的 “查询 - 修改 - 提交 - 恢复” 流程中:查询时,MVCC 通过 undo 日志获取可见版本,无需等待锁;修改时,redo/undo 日志先记录,缓冲池生成脏页;

tangyuan12345678的博客 1415

《数据结构与算法基础 by王卓老师》学习笔记——2.4线性表的顺序表示和实现5——插入算法

顺序表的插入算法

m0_55841508的博客 396

手搓UDS Bootloader|全网独家复现0x10诊断会话控制、详解会话跳转规则与S3超时机制、助力ECU在线刷写、固件迭代、车规安全升级落地

在车载UDS诊断(ISO 14229)与Bootloader固件升级架构中,0x10诊断会话控制服务是所有高级诊断、固件刷写功能的前置核心与权限管控入口,属于UDS基础必实现服务。车载ECU通过分级会话模式,隔离常规故障诊断、高级标定、固件重编程等高、低权限操作,从协议层面保障车载电控系统的安全性与稳定性。多数嵌入式开发者开发UDS Bootloader时,仅简单实现会话切换报文应答,未吃透会话强制跳转规则、S3安全超时机制、会话权限绑定、APP在线刷写跳转逻辑。

getusushu的博客 465

ComfyUI报错ModuleNotFoundError: No module named ‘comfy.options‘

好家伙,我一想我刚刚好像用了pip安装了comfy模块,不会是和ComfyUI自带的comfy模块产生冲突了吧。(3)还有的说是项目不是最新版,叫更新到最新版本的,好家伙,我报错之前根本没更新也没错,突然就报错的。(4)还有的说没有comfy.options这部分代码,叫自己去拉一个,我一看也有啊。我也不知道啥时候脑抽风去装这么个东西的,幸好我聪明机智,一眼就知道了。看把我气的,然后网上搜集各种资料,一个一个去试。

满目星辰 5159

《数据结构与算法基础 by王卓老师》学习笔记——2.4线性表的顺序表示和实现6——删除算法

顺序表的删除算法

m0_55841508的博客 351

部署OpenClaw(ClawdBot、MoltBot)后访问localhost:18789报1008错误怎么办?

部署openclaw(曾用名ClawdBot、MoltBot)后访问localhost:18789出现1008授权错误❌?本文分享如何快速解决这个问题✅

XiaoqiangClub的博客 1万+

《数据结构与算法基础 by王卓老师》学习笔记——2.4线性表的顺序表示和实现4——查找算法

用平均查找次数来衡量顺序表(其实是期望值)

m0_55841508的博客 431

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

数据结构线性表

文章目录二、线性表2.1、线性表的定义和特点2.2、案例引入2.3、线性表的类型定义2.4、线性表的顺序表示和实现2.4.1、线性表的顺序表示2.4.2、顺序表中基本操作的实现2.5、线性表的链式表示和实现2.5.1、单链表的定义和表示2.5.2、单链表基本操作的实现2.5.3、循环链表2.5.4、双向链表2.6、顺序表和链表的比较2.7、线性表的应用2.8、案例分析与实现第二章小结第二章习题   二、线性表 伪码书上讲的也很详细,笔记中就不再打了。 2.1、线性表的定义和特点 由n (n≥0)个

chongyang_的博客 3万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

数据结构学习笔记——线性表之顺序表

5)取表中某个元素:GetList(L , i ), 即ai。3)判断表是否为空:list_empty (L)。定位:确定给定元素x在表L中第一次出现的位置(或序号)。即实现Locate(L,x)。若将线性表L=(a0,a1, ……,an-1)中的各元素依次存储于计算机一片。6)定位运算:Locate(L,x)设有一个顺序表L={1,2,3,4,5,6}1)建立一个空表:list_create(L)2)置空表:list_clear(L)。使用二元组描述L=(D,R),则。4)求表长:length (L)

2402_84707567的博客 2085

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

王道数据结构课代表 - 考研数据结构 第二章 线性表 究极精华总结笔记(C版本)

数据结构与算法 笔记导航🚥🚥🚥 🥬 第一章 绪论 🥕 第二章 线性表 🥪 第三章 栈和队列 🍊 第四章 串-KMP(看毛片算法) 🍒 第五章 树和二叉树 🍀 第六章 图 🍚 第七章 查找(B树、散列表) 🧄 第八章 排序 (内部排序:八大排序动图演示与实现 + 外部排序) 🍔 数据结构与算法 复试精简笔记 🎨 408 全套初复试笔记汇总 传送门 🏃‍🏃‍🏃‍ 如果本篇文章对大家起到帮助的话,跪求各位帅哥美女们,求赞👍 、求收藏、求关注!

clzZ2的博客 1万+

数据结构——线性表(顺序存储结构)

利用数组实现的顺序存储的线性表,包含各种操作的具体实现

qq_55869380的博客 3997

数据结构——线性表

线性表是一种逻辑结构 基本概念 线性表的存储:顺序存储,链式存储(单链表,双链表,循环链表,静态链表),顺序表与链表比较,存储结构选择 串:基本概念,存储结构,模式匹配,KMP 队列:顺序队列,循环队列,链式队列,双端队列 栈:基本概念(卡特兰数),栈的存储结构(顺序栈,链栈),栈的应用,表达式的表示与计算 矩阵和广义表:数组,矩阵存储(对称矩阵,三角矩阵,三对角矩阵),稀疏矩阵(十字链表,三元组存储),广义表

努力,奋斗! 6602

数据结构1——线性表的顺序存储结构

线性表顺序存储C++代码实现

QiQi_sviper的博客 960

【数据结构与算法】顺序表

无论你期望或者不期望,清晨依旧来临。

hsy1603914691的博客 1361
上一篇: CSS定位知识点
下一篇: 定位的拓展
Zhengqin Yuan
博客等级 码龄5年 135粉丝 146原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值