软考数据库第三章数据结构与算法

软考数据库第三章数据结构与算法

笔记

3.1 线性结构

线性表

1、线性表的定义
一个线性表是n个元素的有限序列(n≥0),通常表示为(a1,a2,a3,……,an)。
2、线性表的顺序存储(顺序表)
是指用一组地址连续的存储单元依次存储线性表中的数据元素,从而使得逻辑上相邻的两个元素在物理位置上也相邻。

在这里插入图片描述

优点:可以随机存取表中的元素,按序号查找元素的速度很快。
缺点:插入和删除操作需要移动元素。

3、线性表的链式存储(链表)
是指用节点来存储数据元素,元素的节点地址可以连续,也可以不连续。节点空间只有在需要时才申请,无需事先分配。

在这里插入图片描述

优点:插入和删除操作不需要移动元素
缺点:只能按顺序访问元素,不能进行随机存取。

链表的类别

在这里插入图片描述

​ 栈和队列都是一种特殊的线性表,栈是按“后进先出”的规则进行操作的。
(1)顺序栈:用一组地址连续的存储单元依次存储
自栈顶到栈底的数据元素。
​ 存储空间是预先定义或申请的,因此可能会出现
栈满的情况。
在这里插入图片描述

​ 每一个元素入栈时都要判断栈是否已满。
​ 需要设置一个头指针指到栈顶。
​ 需要附设指针top指示栈顶元素的位置。

(2)链栈:用链表存储栈中的元素。
在这里插入图片描述

栈中元素的插入和删除仅在栈顶进行,因此

不必设置头节点,链表的头指针就是栈顶指针。

队列

​ 队列是一种“先进先出”的线性表,队尾入队头出。
​ 队列的顺序存储:
(1)顺序队列:
在这里插入图片描述

(2)循环队列

在这里插入图片描述

队列的链式存储(链队列):
为了便于操作,可以给链队列添加一个头
节点,并令头指针指向头节点。
队列为空的判定条件就是头指针和尾指
针的的值相同,并且均指向头节点。

在这里插入图片描述

​ 字符串是一串文字及符号的简称,是一种特殊的线性表。
​ 字符串的基本数据元素是字符,常常把一个串作为一个整体来处理。
​ 串是仅由字符构成的有限序列,是取值范围受限的线性表。一般记为
​ S=‘a1a2…an’,其中S是串名,单引号括起来的字符序列是串值。
​ 串长:即串的长度,指字符串中的字符个数。
​ 空串:长度为0的空串,空串不包含任何字符。
​ 空格串:由一个或多个空格组成的串。
​ 子串:由串中任意长度的连续字符构成的序列称为子串。
​ 串相等:指两个串长度相等且对应位置上的字符也相同。
​ 串比较:两个串比较大小时以字符的ASCII码值作为依据。

串的存储结构:
(1)顺序存储:用一组地址连续的存储单元来存储串值的字符序列。
在这里插入图片描述

(2)链式存储:字符串可以采用链表作为存储结构,当用链表存储串中的字符时,每个结点中可以存储一个字符,也可以存储多个字符。

在这里插入图片描述

3.2 数组和矩阵

数组

​ 一维数组是长度固定的线性表,数组中的每个数据元素类型相同。n维数组是定长线性表在维数上的扩张,即线性表中的元素又是一个线性表。
​ 由于数组一般不做插入和删除,且元素个数和元素之间的关系不再发生变动,那么数组适合采用顺序存储结构
​ 数组元素的存储方式及相关计算:
​ 二维数组的存储结构可分为以行为主序(按行存储)和以列为主序
(按列存储)两种方法。
​ 设每个数据元素占用L个单元,m、n为数组的行数和列数,那么:
以行为主序优先存储的地址计算公式为:

L o c ( a i j ) = L o c ( a 11 ) + ( ( i − 1 ) × n + ( j − 1 ) ) × L Loc(aij)=Loc(a11)+((i-1)×n+(j-1))×L Loc(aij)=Loc(a11)+((i1)×n+(j1))×L
​ 以列为主序优先存储的地址计算公式为:

L o c ( a i j ) = L o c ( a 11 ) + ( ( j − 1 ) × m + ( i − 1 ) ) × L Loc(aij)=Loc(a11)+((j-1)×m+(i-1))×L Loc(aij)=Loc(a11)+((j1)<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值