《数据结构》| 第二章 线性表


与你相识


博主介绍:

– 本人是普通大学生一枚,每天钻研计算机技能,CSDN主要分享一些技术内容,因我常常去寻找资料,不经常能找到合适的,精品的,全面的内容,导致我花费了大量的时间,所以会将摸索的内容全面细致记录下来。另外,我更多关于管理,生活的思考会在简书中发布,如果你想了解我对生活有哪些反思,探索,以及对管理或为人处世经验的总结,我也欢迎你来找我。

– 目前的学习专注于Go语言,辅学算法,前端领域。也会分享一些校内课程的学习,例如数据结构,计算机组成原理等等,如果你喜欢我的风格,请关注我,我们一起成长。


Introduction

从本章到第4章讨论的线性表、栈、队列、串和数组都属于线性结构

我们本章主要是讨论线性表的逻辑结构(线性结构)、存储结构(顺序存储或链式存储)和相关运算(基于此数据结构的增删查改等操作)。

可以看到数据结构构成三要素:

  1. 逻辑结构
  2. 数据的运算
  3. 存储结构

我们现在学习线性表这种具体的数据结构,它的逻辑结构是线性结构,如果存储结构是顺序存储就是线性表,如果存储结构是链式存储,就是链表

基于这个具体的线性表或链表来进行一些运算,就是对数据的运算

本章你只需要知道线性结构具有怎样的特点?顺序存储和链式存储有什么特点?以及如何在代码中使用它们?

需要注意的是,线性表是最基本且最常用的一种线性结构,同时也是其他数据结构的基础,尤其本章的单链表,是贯穿整个数据结构课程的基本技术。



(掌握)线性表的基本特征

定义

线性结构的基本特点是除第一个元素无直接前驱,最后一个元素无直接后继之外,其他每个数据元素都有一个前驱和后继。

它就和排队一样,是一个数据元素连着一个数据元素,所以这也是为什么它叫线性结构。

另外就是线性结构的每个元素的特性都是相同的,在编程的角度说,就是每个元素的类型都是相同的。

就这么简单,你就学会了什么是线性结构。

看一下线性结构具体的表示方式:

基本操作的表示

这个可以先看看表有一个感性的认识,之后我们会详细展开,如果你已经能够实现这些操作,说明你对这个数据结构的理解已经至少是入门级别了。

(掌握)线性表在顺序物理结构上的表示和基本操作的实现

线性表在顺序物理结构上的表示

顺序结构是指:用一组地址连续的存储单元依次存储线性表的数据元素。

若每个数据元素占l个存储单元,LOC(a1)为线性表的起始位置,称为基址

这个基址非常的重要!通过得到基址,就能得到第一个元素的地址,又因为线性结构的每个元素的类型都是相同的,也就是每个元素的大小都是相同的,那么就可以通过一个公式来计算出元素的地址了,得到元素的地址,也就可以得到元素的值。

则第i个元素的存储位置为:

LOC(ai) = LOC(a1) + ( i - 1 ) * l

可以通过一个小学知识来解释这个公式:
假如第一个元素的地址是10,每个元素的大小是5,那么:
第一个元素的地址是10
第二个元素的地址是15
第三个元素的地址是20
第四个元素的地址是25
第n个元素的地址是10 + (n - 1) * 5
……

这也就是为什么数组可以通过arr[3]直接来获取3号下标的元素了,通过计算出地址取值就可以了。

在程序中,不需要我们通过地址计算来取值,我们只需要告诉程序要取几号元素,程序内部会自动的把值给我们取出来。

线性表在顺序存储的基本实现

顺序存储的基本实现

(掌握)线性表在链式物理结构上的表示和基本操作的实现

线性表在链式物理结构上的表示

链式存储结构的特点:用一组任意的存储单元存储线性表的数据元素。

它不能通过下标来直接访问,而是需要通过前一个节点来存储地址,比如第一个节点叫头指针,它有一个属性存第二个数据的地址,第二个数据本身又存了第三个数据…

这是链式存储的基本特点,我们可以看到它也满足线性结构的特点,和顺序存储的区别只是它不能随机存取。

线性表在链式存储的基本实现

链式存储的基本实现


欢迎评论区讨论,或指出问题。 如果觉得写的不错,欢迎点赞,转发,收藏。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jacob_云飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值