C语言数据结构——线性表

今天又是活力满满的一天!加油呀!
今天开始学习线性表啦!
一、何为线性表?
线性表就像我们买票排队一样,具有线一样性质的结构。
线性表的官方定义:由零个或多个数据元素组成的有限序列
二、线性表的特点:
——元素之间有先来后到,具有一定的顺序。
——若元素存在多个,(会牵扯到前驱后继的概念),则第一个元素无前驱,最后一个元素无后继,且其他元素都有且只有一个前驱和后继。
——线性表强调的是有限的,无论计算机发展到多强大,它所处理的元素都是有限的。
例子如下:
C语言数据结构——线性表_第1张图片
所以线性表元素的个数n(n>=0)定义为线性表的长度,当n=0时,称为空表。
三、抽象数据类型:
1.在C语言中,按照取值的不同,数据类型可以分为两类:
——原子类型:不可以再分解的基本类型,如整型、浮点型、字符型等。
——结构类型:由若干个类型组合而成,是可以再分解的,例如整型数组是由若干整形数据组成的。
2.抽象数据类型(Abstract Data Type ,ADT)是☞一个数学模型及定义在该模型上的一组操作。
所谓抽象数据类型就是把数据类型和相关操作捆绑在一起。
四、线性表有什么相关操作呢?
Operation:
InitList(*L):初始化操作,建立一个空的线性表L。
ListEmpty(L):判断线性表是否为空表,若线性表为空表,返回true,否则返回false。
ClearList(*L):将线性表清空。
GetElem(L,i,*e):将线性表L中的第i个位置元素值返回给e。
LocateElem(L,e):在线性表 L中查找与给定值e相等的元素,如果查找成功,返回该元素在表中序号表示成功;否则,返回0表示失败。
ListInsert(i*L,i,*e):在线性表L中第i个位置插入先元素e。
ListDelete(*L,i,*e):删除线性表L中第i个位置元素,并用e返回其值。
**ListLength(L)*返回线性表L的元素个数。
看下面一个例子:
循环遍历集合B中的每一个元素,判断当前元素是否存在A中,若,不存在,则插入A中。
C语言数据结构——线性表_第2张图片
五、线性表的顺序存储结构
在上一篇谈到线性表有两种物理存储结构:顺序存储结构和链式存储结构。那么线性表的顺序存储结构指的是怎么存储的呢?
线性表的顺序存储结构☞用一段地址连续的存储单元依次存储线性表的数据元素。如:
在这里插入图片描述
顺序存储的结构代码:
C语言数据结构——线性表_第3张图片
总结:顺序存储结构封装需要三个属性:
——存空间的起始位置,数组data,它的存储位置就是线性表存储空间的存储位置。
——线性表的最大存储容量:数组的长度MaxSize。(初始化后不会在改变)
——线性表的当前长度:length。(会随时变化。)
地址计算方法:
C语言数据结构——线性表_第4张图片
C语言数据结构——线性表_第5张图片
数据结构学起来真的有点费劲呀!今天就学到这里ba!

你可能感兴趣的:(笔记,数据结构,算法,c语言)