2022年数据结构知识点总结 .pdf
《2022年数据结构知识点总结 .pdf》由会员分享,可在线阅读,更多相关《2022年数据结构知识点总结 .pdf(16页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、学习必备欢迎下载数据结构知识点总结内容概要:基本概念 线性表 栈与队列 树与二叉树 图查找算法 排序算法精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 16 页学习必备欢迎下载一、基本概念1、数据元素是数据的基本单位。2、数据项是数据不可分割的最小单位。3、数据结构的逻辑结构(抽象的,与实现无关)物理结构(存储结构)顺序映像(顺序存储结构)位置“相邻”非顺序映像(链式存储结构)指针表示关系4、算法特性:算法具有正确性、有穷性,确定性,(可行性)、输入,输出正确性:能按设计要求解决具体问题,并得到正确的结果。有穷性:任何一条指令都只能执行
2、有限次,即算法必须在执行有限步后结束。确定性:算法中每条指令的含义必须明确,不允许由二义性可行性:算法中待执行的操作都十分基本,算法应该在有限时间内执行完毕。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 16 页学习必备欢迎下载输入:一个算法的输入可以包含零个或多个数据。输出:算法有一个或多个输出5、算法设计的要求:(1)正确 性:算法应能满足设定的功能和要求。(2)可读 性:思路清晰、层次分明、易读易懂。(3)健壮 性:输入非法数据时应能作适当的反应和处理。(4)高效 性(时间复杂度):解决问题时间越短,算法的效率就越高。(5)低存
3、储量(空间复杂度) :完成同一功能,占用存储空间应尽可能少。二、线性表1、线性表 List:最常用且最简单的数据结构。含有大量记录的线性表称为文件。2、线性表是 n 个数据元素的有限序列。线性结构的特点:“第一个”“最后一个”前驱 后继。3、顺序表 线性表的顺序存储结构特点a) 逻辑上相邻的元素在物理位置上相邻。b) 随机访问。1)typedef struct DataType elemMAXSIZE; int length; SqList; 2)表长为 n 时,线性表进行插入和删除操作的时间复杂度为O(n) 插入一个元素时大约移动表中的一半元素。删除一个元素时大约移动表中的(n-1)2 4、
4、线性表的链式存储结构1)类型定义简而言之,“数据 + 指针” 。typedef struct LNode DataType data; struct LNode *next; LNode, *LinkList; 2)不带头结点的空表判定为L= =null 带头结点的空表判定为L-next= =null 循环单链表为空的判定条件为L.next= =L 线性链表的最后一个结点的指针为NULL 头结点的数据域为空,指针域指向第一个元素的指针。5、顺序表和单链表的比较0 1 MAXSIZE-1 . L.elem L.elem L.elem L.length=0 L.length=MAXSIZE 0L.
5、lengthtop= =MAXLEN 1)return 0 ;/ 栈满不能入栈,且返回0else s-top+;s-datas-top=x;/ 栈不满,则压入元素xreturn 1 ; / 进栈成功,返回1出栈 :出栈运算是指取出栈顶元素,赋给某一个指定变量x。算法步骤:(a) 判栈是否为空,若栈空,作下溢处理,并返回0;(b) 若栈非空,将栈顶元素赋给变量x;(c)指针 top减1,并返回 1。算法实现:datatype Pop (SeqStack *s) datatypex;if (SEmpty ( s ) ) return 0 ;/ 若栈空不能出栈 ,且返回 0else x=s-data
6、s-top;/ 栈不空则栈顶元素存入*xs-top - -;return x ; / 出栈成功,返回13、队列先进先出的线性表。队尾入队对头出队允许插入的一端叫做队尾允许删除的一端叫做对头4、链队列typedef struct queuenodedatatypedata; struct queuenode *next;queuenode; / 链队结点的类型datatypetypedefstructqueuenode *front,*rear;linkqueue; / 将头指针、尾指针封装在一起的链队frontrearpABJ图4-6 链队列示意图精选学习资料 - - - - - - - -
7、- 名师归纳总结 - - - - - - -第 5 页,共 16 页学习必备欢迎下载5、 循环队列typedef struct DataType elemMAXSIZE; int front, rear; / 队头、队尾位置 SqQueue; 循环队列判断队空的条件为front=rear 循环队列判断队满的条件为(rear+1)%m=front 在一个循环队列中删除元素时,首先需要后移队首指针。6、栈与队列比较:都是线形结构,栈的操作LIFO (后进先出),队列操作 FIFO (先进先出)。四、树和二叉树精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -
8、第 6 页,共 16 页学习必备欢迎下载1. 树的定义树(Tree) :是 n (n0)个有限数据元素的集合。在任意一棵非空树T 中:(1)有且仅有一个特定的称为树根(Root)的结点,根结点无前趋结点;(2)当 n1 时,除根结点之外的其余结点被分成m(m0) 个互不相交的集合 T1,T2,Tm ,其中每一个集合Ti(1 i m )本身又是一棵树,并且称为根的子树。2. 基本术语:结点的度数:结点的非空子树(即后缀)个数叫作结点的度数树叶、分支结点:左(右)子树均为空二叉树的结点称作树叶否则称作分支结点。结点的层数:规定根的层数是0,其余结点的层数等于其父结点的层数加1 孩子和双亲:树的深度
9、:树的度数:树中度数最大的结点度数叫作树的度数树林:是由零个或多个不相交的树所组成的集合。3. 二叉树性质:1)二叉树的第i层上至多有2i-1 个结点。2)深度为 k的二叉树至多有2k-1 个结点。满二叉树 :深度为k,有 2k-1 个结点。完全二叉树 :给满二叉树的结点编号,从上至下,从左至右,n 个结点的完全二叉树中结点在对应满二叉树中的编号正好是从1 到 n。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 16 页学习必备欢迎下载3)叶子结点n0,度为 2 的结点为n2,则 n0 = n2+1。考虑结点个数:n = n0 + n1
10、 + n2考虑分支个数:n-1 = 2n2 + n1可得 n0 = n2+1 4)n 个结点的完全二叉树深度为1log n。5)n 个结点的完全二叉树,结点按层次编号有:i 的双亲是2/n,如果 i = 1 时为根(无双亲) ;i 的左孩子是2i,如果 2in,则无左孩子;i 的右孩子是2i + 1,如果 2i + 1n 则无右孩子。4. 二叉树的存储结构顺序存储结构用数组、编号i 的结点存放在i-1处。适合于存储完全二叉树。链式存储结构二叉链表:typedef struct BTNode DataType data; struct BTNode *lchild, *rchild; BTNod
11、e, *BinTree; 三叉链表:typedef struct BTNode DataType data; struct BTNode *lchild, *rchild, *parent; BTNode, *BinTree; 在链式存储结构中,含有n 个结点的二叉链表有n+1 个空链域。5.遍历二叉树(先序 DLR 、中序 LDR 、后序 LRD )方法与 C语言描述由二叉树的递归定义可知,一棵二叉树由根结点(D) 、根结点的左子树(L)和根结点的右子树( R)三部分组成。因此,只要依次遍历这三部分,就可以遍历整个二叉树。一般有三种方法: 先序 ( 前序 ) 遍历 DLR (根左右)、中序遍
12、历 LDR (左根右)、 后序遍历 LRD (左右根)。data parent lchild rchild data rchild lchild 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 8 页,共 16 页学习必备欢迎下载1 先序遍历(DLR )的递归过程void Preorder(BT*T) / 先序遍历二叉树BT if (T= =NULL) return; / 递归调用的结束条件 printf(T-data); / 输出结点的数据域Preorder(T-lchild); / 先序递归遍历左子树Preorder(T-rchild); /
13、先序递归遍历右子树2 中序遍历(L DR)的递归过程void Inorder(BT*T)/ 中序遍历二叉树BT if (T= =NULL) return; / 递归调用的结束条件 Inorder(T-lchild); / 中序递归遍历左子树printf(T-data); / 输出结点的数据域Inorder(T-rchild); / 中序递归遍历右子树3 后序遍历(L RD)的递归过程void Postorder(BT*T) / 后序遍历二叉树BT if (T= =NULL) return; / 递归调用的结束条件 Postorder(T-lchild); / 后序递归遍历左子树Postorde
14、r(T-rchild); / 后序递归遍历右子树printf(T-data); / 输出结点的数据域6. 线索二叉树n 个结点的二叉链表中有n+1 个空指针,可以利用其指向前驱或后继结点,叫线索 ,同时需附加一个标志,区分是子树还是线索。lchild 有左子树,则指向左子树,标志ltag = 0;没有左子树,可作为前驱线索,标志ltag = 1。rchild 有右子树,则指向右子树,标志rtag = 0;没有右子树,可作为后继线索,标志rtag = 1。7. 树和森林树的存储结构双亲表示法 ,孩子表示法 ,孩子兄弟表示法 。特点:双亲表示法容易求得双亲, 但不容易求得孩子; 孩子表示法容易求得
15、孩子,但求双亲麻烦;两者可以结合起来使用。 孩子兄弟表示法, 容易求得孩子和兄弟,求双亲麻烦,也可以增加指向双亲的指针来解决。lchild ltag data rtag rchild 0/1 0/1 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 9 页,共 16 页学习必备欢迎下载树与二叉树的转换表 错误!文档中没有指定样式的文字。.1 树和二叉树的对应关系树对应的二叉树根根第一个孩子左孩子下一个兄弟右孩子树的遍历树的结构:根,根的子树。先根遍历:。例:ABCDEFGHIJK 。后根遍历:。例:CEDFBHGJKIA 。遍历森林森林的结构:第一棵
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年数据结构知识点总结 2022 数据结构 知识点 总结
限制150内