目录
一、感受线性表的存在
从这一篇开始,我们将介绍第一个数据结构:线性表。
在正式介绍之前,我们先从图片来感受一下线性表的特征。
这张图的内容,大家可以当成我们小学开学参加升旗仪式的时候,每个班级的人都特别多,而且刚刚开学,班主任想要区分每一位同学并不容易。所以我们想到了一个方法,让大家按照一个约定排成一队,大家只要记住前面一个同学,就能记住自己的位置了。而且老师也能很快第清点人数,万一有人走丢,也能通过询问哪位同学的前一位同学不见了,在最快的时间内知道谁走丢。
二、线性表的定义
从刚才的描述中,线性表就和排队一样,具有线一样的结构。正式一点的定义如下:
线性表(linear list)是具有相同特性的数据元素的一个有限序列。
这里需要强调几个关键的地方:
1、首先它是一个数列,也就是说元素之间是有个先来后到的,如果是下面这种就没有顺序。
2、若元素存在多个,则第一个元素无前驱,而最后一个元素无后继,其他元素都有且只有一个前驱和后继。
3、另外,线性表强调是有限的,事实上无论计算机发展到多强大,它所处理的元素都是有限的。(无限只存在于数学理论中)
如果用数学语言来定义线性表,即为下文叙述:
若将线性表记为,则表中 领先于,领先于,称是的直接前驱元素,是的直接后继元素。下图为该定义的直观展示:
线性表元素的个数n(n>=0)定义为线性表的长度,当n=0时,称为空表。
三、考题模拟
1、请问公司的组织架构是否属于线性关系?
分析:一般公司的的架构呈现树状,并不满足线性表“只有一个前驱和后继”的说法,所以公司的组织架构不属于线性关系。
2、那么班级同学的友谊呢?
分析:这个当然也不是,一个同学可以由好多个朋友,两个同学间也可以由好多共友,更像是一个复杂的图,网络,所以也不是线性关系。
3、那么班级的点名册是不是线性表?
分析:班级的点名册是一种数学逻辑,按学号的顺序来排成一个线性表,所以是线性关系。
学号 | 姓名 | 性别 | 职位 |
1 | 张三 | 男 | 班长 |
2 | 李红 | 女 | 副班长 |
3 | 王强 | 男 | 学习委员 |
4 | 赵梦 | 女 | 组长 |
四、抽象数据类型
1、数据类型的定义:
在介绍抽象数据类型之前,我们应该了解数据类型的定义是什么?
数据类型:是指一组性质相同的值的集合及定义在此集合上的一些操作的总称。 直白点说,例如很多编程语言的整型、浮点型、字符型这些指的就是数据类型。
那么,当年那些设计计算机语言的人,为什么会考虑到数据类型呢?
举个例子,大家都需要住房子,也都希望自己住的房子越大越好。但显然,住多大的房子取决于你有多少积蓄。于是,商品房就出现了各种各样的房型,有120平,有80平,有30平......这样就能满足大家的需求,大家可以根据自己的继续住进对应的房子里。
同样,在计算机中,内存也不是无限大的,你要计算如1+1=2这样的整型数字的加减乘除运算,显然不需要开辟很大的内存空间。而如果你要计算1.23456789+2.987654321这样带大量小数的,就需要开辟比较大的空间才能存放得下。于是计算机的研究者们就考虑,要对数据类型进行分类,分出多种数据类型来适合不同的计算条件差异。
例如在C语言中,按照取值的不同,数据类型可以分为两类:
(1)原子类型:不可以再分解的基本类型,例如整型、浮点型、字符型等。
(2)结构类型:由若干个类型组合而成,是可以再分解的,例如整型数组是由若干整型数据组成的。
2、抽象数据类型
首先,什么是抽象?
抽象和具体相对:是指抽取出事物具有的普遍性的本质。他要求抽出问题的特征而忽略非本质的细节,是对具体事物的一个概括。抽象是一种思考问题的方式,它隐藏了繁杂的细节。
就像我们来形容一个人,美就是一种抽象,但是大眼睛,瓜子脸.....就是一种具体。
我们对己有的数据类型进行抽象,就有了抽象数据类型。
抽象数型(AbstractDataType,简称ADT丿是指一个数学模型及定义在该模型上的一组操作。抽象数据类型的定义仅取决于它的一组逻辑持性,而与其在计算机内部如何表示和实现无关。
比如1+1=2这枰一个燥作,在不同CPU的处理上可能不一样,但由于其定义的数学特性相同,所以在计算机编程者看来,它们都是相同的。
注意:“抽象"的意义在于数据类型的数学抽象持性。
而且,抽象数据类型不仅仅指些己经定义并实现的数据类型,还可以是计算机编程者在设计
件程序时自己定义的数据粪型。
例如一个3D游戏中,要定位角色的位置,那么总共会出(x,y,z)三个整型数据组合在一起的坐标。我们就可以定义一个point的抽象数据型,它拥有(x,y,z)三个整型变量,这样我们就可以方便的对一个角色的置进行操作。
为了便于在之后的讲解中对抽象数据类型进行规范的描述,我们给出了描述抽象数据类型的标准格式:
ADT:抽象数据类型名
Data:数据元素之间逻辑关系的定义
Operation:操作
(本节完)
参考资料:
1、挤地铁图片来源:北京地铁:最挤的地铁永远是你要坐的那一条_澎湃号·湃客_澎湃新闻-The Paper澎湃新闻
2、线性表1_哔哩哔哩_bilibili 鱼C小甲鱼
3、《数据结构教程》李春葆主编-清华大学出版社-2022.7
标签:线性表,元素,数据类型,抽象数据类型,整型,数据结构,定义 From: https://blog.csdn.net/less_duuuzx/article/details/142035351