随笔分类 -  数据结构基础

摘要:题目:http://www.patest.cn/contests/mooc-ds/03-%E6%A0%912题意:给出树的一些结点,每个结点的两个值分别表示左儿子和右儿子,所以根节点肯定不会出现在上面的数据中,因为根节点不是其它任何节点的儿子。最后的要求是按照层序遍历的方式输出叶子结点。思路:先建树... 阅读全文
posted @ 2015-03-24 23:44 Summer先生 阅读(789) 评论(0) 推荐(0)
摘要:它们之间的区别在于运算符相对与操作数的位置不同。将中缀表达式转换为前缀表达式:遵循以下步骤:(1) 初始化两个栈:运算符栈S1和储存中间结果的栈S2;(2) 从右至左扫描中缀表达式;(3) 遇到操作数时,将其压入S2;(4) 遇到运算符时,比较其与S1栈顶运算符的优先级:(4-1) 如果S1为空,或... 阅读全文
posted @ 2015-03-20 03:17 Summer先生 阅读(401) 评论(0) 推荐(0)
摘要:【数据结构第一周】最大子列和问题整理【数据结构第二周】线性表知识点整理【数据结构第二周】堆栈知识点整理【数据结构第二周】队列知识点整理【数据结构第三周】树知识点整理(上)【数据结构第四周】树知识点整理(下)【二叉搜索树】【数据结构第四周】树知识点整理(下)【平衡二叉树】【数据结构第四周】树知识点整理... 阅读全文
posted @ 2015-03-12 20:58 Summer先生 阅读(359) 评论(0) 推荐(0)
摘要:步骤:1、从数列中挑出一个元素,称为"基准"或者“主元”(pivot)2、重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作3、递归地把小于基准值元素的子... 阅读全文
posted @ 2015-03-12 15:31 Summer先生 阅读(210) 评论(0) 推荐(0)
摘要:1、简单排序void Bubble_Sort( ElemenType A[], int N){ for ( P = N-1; P >= 0 ; P--) { flag = 0; for (i = 0; i A[i+1]) { Swap(A[i],A[i+1]); flag = ... 阅读全文
posted @ 2015-03-10 20:13 Summer先生 阅读(291) 评论(0) 推荐(0)
摘要:1、最短路径问题问题抽象:在网络中,求两个不同顶点之间的所有路径中,边的权值之和最小的那一条路径 。这条路径就是两点之间的最短路径(Shortest Path) ,第一个顶点为源点(Source),最后一个顶点为终点(Destination) 。问题分类:单源最短路径问题:从某固定源点出发,求其到所... 阅读全文
posted @ 2015-03-10 18:24 Summer先生 阅读(570) 评论(0) 推荐(0)
摘要:1、什么是图表示多对多的关系包含一组顶点:通常用V(Vertex)表示顶点集合一组边:通常用E(Edge)表示边的集合2、抽象数据类型定义类型名称:图(Graph)数据对象集:G(V,E)由一个非空的有限顶点集合V和一个有限边集合E组成。操作集:对于任意图G 属于 Graph,以及v 属于 V,e ... 阅读全文
posted @ 2015-03-10 16:17 Summer先生 阅读(1005) 评论(0) 推荐(0)
摘要:在队列中,调度程序反复提取队列中第一个作业并运行,因为实际情况中某些时间较短的任务将等待很长时间才能结束,或者某些不短小,但具有重要性的作业,同样应当具有优先权。堆即为解决此类问题设计的一种数据结构。1、堆的两个特性结构性:用数组表示的完全二叉树有序性:任一结点的关键字是其子树所有结点的最大值(或最... 阅读全文
posted @ 2015-01-27 00:08 Summer先生 阅读(482) 评论(0) 推荐(0)
摘要:1、什么是平衡二叉树平衡因子(Balance Factor,简称BF):BF(T)=HL-HR,HL和HR分别代表树T的左右子树的高度平衡二叉树(Balanced Binary Tree)(AVL树)空树,或者任一结点的左右子树的高度差的绝对值不超过1假设nh是高度为h的平衡二叉树的最小结点数,则2... 阅读全文
posted @ 2015-01-26 15:10 Summer先生 阅读(701) 评论(0) 推荐(0)
摘要:二叉搜索树(1)定义二叉搜索树(Binary Search Tree),也称二叉排序树或二叉查找树一棵二叉树,可以为空;如果不为空,满足以下性质:a.非空左子树的所有键值小于其根节点的键值b.非空右子树的所有键值大于其根节点的键值c.左右子树都是二叉搜索树(2)相关操作Position Find( ... 阅读全文
posted @ 2015-01-14 00:15 Summer先生 阅读(508) 评论(0) 推荐(0)
摘要:1、树的定义树(Tree):n(n>=0)个结点构成的有限集合子树是不相交的。除了根节点外,每个结点有且仅有一个父结点。一棵N个结点的树有N-1条边。2、树的一些基本术语(1)结点的度(Degree):结点的子树个数(2)树的度:树的所有结点中最大的度数(3)叶结点(Leaf):度为0的结点(4)父... 阅读全文
posted @ 2015-01-13 13:36 Summer先生 阅读(1717) 评论(0) 推荐(0)
摘要:队列(Queue):具有一定操作约束的线性表插入和删除操作:只能在一端插入,而在另一端删除先进先出1、队列的顺序存储实现队列的顺序存储结构通常由一个一维数组和一个记录队列头元素位置的变量front以及一个记录队列尾元素位置的变量rear组成(1)初始化#define MaxSize typedef... 阅读全文
posted @ 2015-01-09 18:56 Summer先生 阅读(921) 评论(0) 推荐(0)
摘要:堆栈(Stack):具有一定操作约束的线性表只在一端(栈顶,Top)做插入和删除1、栈的顺序存储实现栈的顺序存储结构通常由一个一维数组和一个记录栈顶元素位置的变量组成。(1)存储#define MaxSize typedef struct { ElementType Data[MaxSize] in... 阅读全文
posted @ 2015-01-09 18:13 Summer先生 阅读(978) 评论(0) 推荐(0)
摘要:1、什么是线性表?线性表(Linear List):由同类型元素构成有序序列的线性结构。表中元素个数称为线性表的长度线性表没有元素时,称为空表表起始位置称表头,表结束位置称为表尾2、线性表的抽象数据类型描述List MakeEmpty():初始化一个空线性表L;ElementType FindKth... 阅读全文
posted @ 2015-01-08 18:51 Summer先生 阅读(2529) 评论(0) 推荐(0)
摘要:题目地址:http://www.patest.cn/contests/mooc-ds/01-1算法一:暴力,直接计算出所有子列和,然后比较,显然复杂度炸裂,O(N^3)int MaxSubseqSum1(int A[],int N){ int ThisSum; int MaxSum = 0; int... 阅读全文
posted @ 2015-01-07 23:56 Summer先生 阅读(599) 评论(4) 推荐(0)