一、线性结构
1.1线性表
线性表是最简单、最基本也是最常用的一种线性结构。常采用顺序存储和链式存储,主要的基本操作是插入、删除和查找等
线性表的定义:一个线性表是n(n>=0)个元素的有限序列,通常表示为(a1,a2,a3…,an)
线性表的存储:
·顺序存储:用一组地址连续的存储单元依次存储线性表中的数据元素,从而逻辑上相邻的两个元素物理位置上也相邻
·链式存储:通过指针链接起来的节点存储数据元素,地址不要求连续
空间方面:链式存储还需要存储指针,所以有空间浪费
时间方面:当需要对元素进行破坏性操作(插入,删除)时,链表效率更高;不改变结构操作(读取,查找)时,顺序表效率更高
根据节点中指针域的设置方式,还可以有以下几种分类:双向链表、循环链表、静态链表
1.2栈和队列
队列是“先进先出”的,分队头和队尾两个指针;栈是“先进后出”的,只有栈顶能进出。
可以将队列理解成一根“水管”,尾部放入元素,头部拿出元素;将栈理解成一个“盒子”,先放入的元素被压在底下,只能后拿出
循环队列:为降低运算复杂度,元素入队时只修改队尾指针,元素出栈时只修改队头指针,即将顺序队列假想成一个环状结构,称之为循环队列

设队列Q容量为MAXSIZE,初始为空,且Q.rear和Q.front都等于0:
元素入队时,修改队尾指针Q.rear=(Q.rear+1)%MAXSIZE,
元素出队时,修改队头指针Q.front=(Q.front+1)%MAXSIZE,
当出队操作导致队列变为空时/入队操作导致队列为满时,有Q.rear==Q.front
1.3串
定义:串是仅由字符构成的有限序列,是一种线性表。字符串是一种特殊的线性表,其数据元素全部为字符。
串的存储模式:可以进行顺序存储或链式存储
串的匹配模式:
·朴素的模式匹配算法:从第一个字符起逐个匹配
·KMP算法:出现相比较不等的字符,利用已得到的“部分匹配”,结果向右滑动尽可能远的距离
二、数组、矩阵和广义表
2.1数组
定义:数组是定长线性表在维数上的扩展,相当于二维“线性表”。
数据元素数目固定,一般不做插入和删除运算,适于采用顺序结构;数据元素类型相同;数据元素的下标关系具有上下界的约束且下标有序。
a[i][j]存储地址:按行存储:a+(i*n+j)*len 按列存储:a+(j*n+i)*len(选择题直接代入特殊值算)
2.2矩阵
特殊矩阵:矩阵中的元素的分布有一定规律。常见的有对称矩阵、三角矩阵等
稀疏矩阵:在一个矩阵中非0元素个数远少于0元素个数,且非0元素分布没有规律
(只出选择题,同样直接代入计算)
2.3广义表
定义:广义表是线性表的推广,是有0个或多个单元素或子表组成的有限序列
长度:最外层元素包含的元素个数;深度:所含括号的重数(没怎么考过)
三、树
3.1树与二叉树
树是n(n>=0)个节点的有限集合,当n=0时称为空树。树的定义是递归的,它表明了树本身的固有特性,也就是一棵树由若干子树构成,而子树又由更小的子树构成

二叉树:二叉树在树的定义上增加规定:一个根节点只能含有两个或以下的孩子节点,所以,二叉树的子树可以称之为左子树(左孩子)和右子树(右孩子)

3.2二叉树的性质与存储结构
1.二叉树的第i层上最多有2^(i-1)个节点
2.高度为k的二叉树最多有2^k-1个节点
3.对于任何一棵二叉树,若最终端节点数为n0,度为2的节点数为n2,则n0=n2+1

数据结构 考点最精简&spm=1001.2101.3001.5002&articleId=137835626&d=1&t=3&u=a3560558d6f949f492d0528d33f77c2b)
1787

被折叠的 条评论
为什么被折叠?



