二叉树 n(n>=0)个结点的有限集合:(五种形态) 1.或者为空二叉树,n=0: 2.或者由一个根结点和两个互不相交的被称为根的左子树和右子树组成.左子树和右子树又分别是一棵二叉树. 3.每个结点最多有2棵子树 4.左右子树有顺序 特殊二叉树 一.斜树 二.满二叉树:1.分支结点都存在左右子树 2.叶子都在同一层 3.非叶子结点的度一定为2 4.相同深度二叉树中满二叉树结点个数最多,叶子树最多 三.完全二叉树:编号与同高度的满二叉树一一对应. 1.叶子结点只可能在层次最下面的两层出现,集中在左…
顺序查找(线性查找) 主要用于在线性表中的查找 int Search1(int a[],int n,int key){ ;i<=n;i++){ //注意从1开始 if(a[i]==key)return i; //查找成功 } ; //查找失败 } int Search2(int a[],int n,int key){ int i=n; a[]=key; //设置“哨兵” while(a[i]==key){ //若不是找的元素 i--; //从前往后查找 } return i; //查找失败也返回…
图G由顶点集V和边集E组成,记为G=(V,E) 图不可为空,一定有顶点集不为空 有向图:有向边(弧)的有限集合 无向图:无向边的有限集合 连通:顶点V到顶点V'有路径 连通分量:无向图中的极大连通子图(极大:1.顶点足够多:2.极大连通子图包含依附这些点的所有边) 强连通分量:有向图中的极大强连通子图 连通的生成树:包含图中的全部n个顶点,但只有n-1条边的极小连通子图 度:以该顶点为一个端点的边数目 入度(ID):以顶点为终点的有向边数目 出度(OD):以顶点为起点的有向边数目 图的存储结构…
排序:将无序的序列重新排列为有序的序列. 插入类排序 插入类排序:在一个有序的序列中,插入一个新的关键字,知道所有的关键字都插入形成一个有序的序列. 直接插入排序:首先以一个元素为有序的序列,然后将后面的元素依次插入到有序的序列中合适的位置直到所有的元素都插入有序序列. void InsertSort(ElemType A[],int n){ int i,j; ;i<=n;i++) ].key){ A[]=A[i]; ;A[].key<A[j].key;--j) A[j+]=A[j]; A[i…
树 一对多的树型结构,有且只有一个特定的根结点. 结点的度:结点拥有子树的数量{ 度为0:叶子结点/终端结点. 度不为0:非终端结点/分支结点(除去根结点其它称为内部结点).} 树的度:树中所有结点的度数的最大值. 树的层次:根为第一层,以此类推. 结点的深度:根结点开始,自顶向下累加. 结点的高度:叶结点开始,自底向上累加. 树的高度(深度):树中结点的最大层数. 结点关系: 祖先结点:根结点到该点的唯一路径上的任意结点. 子孙结点 双亲结点:根结点到该点的唯一路径上的最近结点. 孩子结点 兄…
队列 只允许在一端进行插入,在另一端进行删除的线性表 队头(Front):允许删除的一端(队首) 队尾(Rear):允许插入的一端 FIFO:先进先出 不要求从数组首位开始存储队列 #define MaxSize 50 //定义队列中元素的最大个数 typedef struct{ ElemType data[MaxSize]; //存放队列元素 int front,rear; //队头指针和队尾指针 }SqQueue; 循环队列 其中,首尾相连的顺序存储的队列叫循环队列 入队:rear=(rea…
栈(Stack) 只允许在一端进行插入或删除操作的线性表 栈顶(Top):栈中允许进行插入和删除操作的那一端: 栈底(Bottom):固定的,不允许进行插入或删除的另一端 1.栈是受限的线性表,所以自然具有线性关系. 2.栈中元素后进先出. 栈的顺序存储==顺序栈 #define MaxSize 50 //定义栈中元素的最大个数 typedef struct{ Elemtype data[MaxSize]; //存放栈中元素 }Sqstack; //顺序栈简写 1.Top的值不能超过MaxSiz…
线性表:具有相同数据类型的n(n>0)个数据元素的有限序列. 主要有顺序存储和链式存储. 顺序存储: 特点:地址连续,随机/存取,顺序存储. 建立:首地址/存储空间大小(数组),表长. 方式:静态和动态. 优点:存储密度大:随机存储:快速存取表中任一位置元素. 缺点:插入删除移动大量元素:对存储空间要求高,会产生存储空间的碎片. 1.插入 bool ListInsert(SqList &L,int i,Elemtype e){ ||i>L.length+) //判断i范围是否有效 re…
1.数据>数据元素>数据项      数据的基本单位是数据元素,数据元素的基本单位是数据项 2.运算的定义->针对逻辑结构 集合:同属于一个集合,无其他关系.(数学上的集合) 线性结构:1对1关系(排队) 树形结构:1对多关系(族谱) 图状网状结构:多对多关系(地图) 3.运算的实现->针对物理结构 顺序存储:存储物理位置相邻 链式存储:存储的物理位置未必相邻 索引存储:类似于目录 散列存储:通过关键字直接计算出元素的物理地址 4.时间复杂度 o(1)<o(log2n)<…
获奖感言和C语言的学习心得 自我介绍: 大家好,我的名字叫袁忠,我来自湖南,今年快19岁了,现在是大学一年级,我平时喜欢跑步.打羽毛球,我也喜欢学算法与数学,以及喜欢看一些与计算机有关的书籍,每次我学它们时,我都比较兴奋,都会开开心心去学,我的思维也比较开放,例如:每次我写算法时,我都会想如何简化自己的代码,怎样可以使自己的代码变得更加简单,学数学也一样,我不喜欢固定自己的思维,每次老师给我们讲题目时,我都会想是否还有更简单的方法,最好是联系以前学过的东西,让复杂的问题简单化. 在这大学四年中,…