
数据结构笔记
weixin_43244265
这个作者很懒,什么都没留下…
展开
-
希尔排序
思路:分割序列对子序列进行插入排序代码:#include<bits/stdc++.h>using namespace std;int n,a[1000];void xier(){ int t; for(int i=n/2;i>0;i/=2) { for(int j=i;j<n;j++) { ...原创 2019-12-30 15:05:15 · 84 阅读 · 0 评论 -
二叉排序树
1.二叉排序树(也称二叉查找树):或者是一棵空的二叉树,或者是具有下列性质的二叉树:⑴若它的左子树不空,则左子树上所有结点的值均小于根结点的值;⑵若它的右子树不空,则右子树上所有结点的值均大于根结点的值;⑶ 它的左右子树也都是二叉排序树。2.中序遍历二叉排序树可以得到一个按关键码有序的序列3.分析:若二叉排序树为空树,则新插入的结点为新的根结点;否则,新插入的结点必为一个新的叶子结点,其...原创 2019-12-29 20:35:43 · 137 阅读 · 0 评论 -
查找
1.列表:由同一类型元素组成的集合2.关键码:数据元素中的某个数据项,可以标识列表中的一个或一组数据元素3.键值:关键码值4.主关键码:可以唯一标识一个记录的关键码5.次关键码:不能唯一标识一个记录的关键码6.查找:在具有相同类型的记录构成的集合中找出满足给定条件的记录7.查找的结果:若在查找集合中找到了与给定值相匹配的记录,则称查找成功;否则,称查找失败8.静态查找:不涉及插入和删...原创 2019-12-29 19:59:53 · 119 阅读 · 0 评论 -
图
1.图的定义:图是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G=(V,E)其中:G表示一个图,V是图G中顶点的集合,E是图G中顶点之间边的集合。2.注意:在图中,顶点个数不能为零,但可以没有边。3.无向边:若顶点vi和vj之间的边没有方向,则称这条边为无向边,表示为(vi,vj)。4.无向图:图中的边都是无向边5.有向边:若从顶点vi到vj的边有方向,则称这条边为有向边,...原创 2019-12-24 22:18:36 · 379 阅读 · 0 评论 -
快速排序
思路:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列代码:#include<iostream>#include<cstdio>#include<algorithm>using namespace std...原创 2019-12-24 11:50:08 · 78 阅读 · 0 评论 -
插入排序
题意:保持前缀序列是有序的把后面的元素依次插入前缀序列代码:#include<iostream>#include<algorithm>using namespace std;int a[100];void cha(int l){ for(int i=0;i<l;i++) { int t=a[i]; int ...原创 2019-12-24 11:18:54 · 84 阅读 · 0 评论 -
冒泡排序(优化)
思路:每次冒泡记录最后一次交换的位置,下一次冒泡到该位置就可以,之后的元素已经有序了不用重复处理。代码:#include<iostream>#include<cstdio>#include<algorithm>using namespace std;int a[100];void pai(int l){ int d=l-1; wh...原创 2019-12-24 11:01:14 · 81 阅读 · 0 评论 -
树与二叉树具体操作
1.树的高度:max(左子树高度,右子树高度)+1(递归定义)2.树的宽度:在二叉树的各层上,具有结点数最多的那一层上的结点总数3.左右子树交换:从根出发开始操作,如果要操作的节点是空值,则不进行任何操作;否则,则交换左右儿子对左子树进行处理对右子树进行处理4.判断两棵二叉树是否相同:从根节点出发判断两棵树的根是否相同,是,判断左子树是否相同判断右子树是否相同否结束5....原创 2019-12-23 18:27:33 · 103 阅读 · 0 评论 -
树和二叉树
树的逻辑结构1.树的定义:n(n≥0)个结点的有限集合。,当n=0时,称为空树;2.任意一棵非空树满足以下条件:⑴ 有且仅有一个特定的称为根的结点;⑵ 当n>1时,除根结点之外的其余结点被分成m(m>0)个互不相交的有限集合T1,T2,… ,Tm,其中每个集合又是一棵树,并称为这个根结点的子树。3.结点的度:结点所拥有的子树的个数。4.树的度:树中各结点度的最大值。5.叶子结点...原创 2019-12-03 10:30:15 · 209 阅读 · 0 评论 -
第四章 字符串和多维数组
字符串1.串:零个或多个字符组成的有限序列。2.串长度:串中所包含的字符个数。3.空串:长度为0的串,记为:" "4.非空串通常记为:S=" s1 s2 …… sn "其中:S是串名,双引号是定界符,双引号引起来的部分是串值 ,si(1≤i≤n)是一个任意字符5.子串:串中任意个连续的字符组成的子序列。6.主串:包含子串的串。8.子串的位置:子串的第一个字符在主串中的序号。9....原创 2019-12-02 22:32:33 · 122 阅读 · 0 评论 -
第三章(2) 队列
1.队列特性:先进先出2.顺序队列:队列的顺序存储结构3.队列的顺序存储结构及实现:设置队头、队尾两个指针,队头指针指向队头元素的前一个位置,队尾指针指向队中最后一个元素 (或队头指针指向队列中的第一个元素,队尾指针指向队列中的最后一个元素的后一个位置)4.队列移动特点:(1)整个队列向数组下标较大方向移动(2)单向移动5.假溢出:当元素被插入到数组中下标最大的位置上之后,队列的空...原创 2019-11-06 15:01:29 · 183 阅读 · 0 评论 -
第三章(1) 栈
1.栈:限定仅在表尾进行插入和删除操作的线性表2.空栈:不包含任何数据元素的栈3.栈的特性:后进先出4.注意:栈只是对表插入和删除操作的位置进行了限制, 并没有限定插入和删除操作进行的时间。5.栈的顺序存储结构及实现6。栈的操作:(1)栈和声明(2)入栈(3)判断栈是否为空(4)取栈顶(5)出栈7.双端栈:两个栈共享空间top1=-1:栈1为空top2=S...原创 2019-11-06 14:40:03 · 178 阅读 · 0 评论 -
第一章 线性表
1.定义:线性表简称表,是n个数据元素的有限序列,线性表中数据元素的个数称为线性表的长度。2.空表:长度为0的线性表3.存储:线性表存储方式有两种 顺序存储和链式存储4.顺序表:线性表的顺序存储结构成为顺序表,,其基本思想是用一段地址连续的存储单元依次 存储线性表的数据元素,具有随机存取的结构5.模板:以关键字template开始,后跟以个模板参数列表,这是一个逗号分隔的...原创 2019-10-26 19:48:54 · 281 阅读 · 0 评论