数据结构
zhangxiafll
这个作者很懒,什么都没留下…
展开
-
【数据结构与算法分析】第四章 总结-树的高度和深度的区别
【数据结构与算法分析】第四章 总结-树的高度和深度的区别 深度:对于任意节点n,n的深度为从根到n的唯一路径长,根的深度为1;高度:对于任意节点n,n的高度为从n到一片树叶的最长路径长,所有树叶的高度为1; 如图: K节点在树的底层,是一个叶子节点,则一般定义为K的高度在最低为1,以此类推,O的高度也是为1,P的节点也是为1。M节点是叶子节点O的父节点,从下往上数,M节...原创 2018-08-14 20:40:54 · 1346 阅读 · 0 评论 -
【数据结构】线性表的顺序存储实现
【数据结构】线性表的顺序存储实现//线性表的顺序存储实现#include<iostream>using namespace std;typedef int element;#define Maxsize 1000//线性表的结构,由预设一个数组和实际数组长度组成typedef struct { element data[Maxsize]; int lengt...原创 2018-09-01 11:22:02 · 256 阅读 · 0 评论 -
浙大数据结构 总结二
浙大数据结构 总结二算法定义 一个有限指令集 接受一些输入 产生输出 一定在有限步骤之后终止 每一条指令必须: 有充分明确的目标,不可以有歧义 计算机能处理的范围之内 描述应不依赖于人任何一种计算机语言以及具体的实现手段 什么是好算法空间复杂度S(n)--根据算法写成的程序在执行时占用存储单元的长度。这个长度往往...原创 2018-08-29 09:42:17 · 502 阅读 · 0 评论 -
浙大数据结构 总结一
浙大数据结构与算法分析 总结一第一个程序:分别用递归和循环打印10,100,1000,10000,100000....循环程序为:#include <stdio.h>#include <stdlib.h>void p(int N);int main(){ int N; scanf("%d",&N); p(N);...原创 2018-08-29 08:21:32 · 961 阅读 · 0 评论 -
【数据结构与算法分析】第六章 优先队列(堆)
【数据结构与算法分析】第六章 优先队列(堆)一般来说,短的作业应尽可能快的结束,则已经被运行的作业当中这些短作业应拥有优先权,此外,有些作业虽不短小但也很重要,也应该拥有优先权。1.模型优先队列允许下列两种操作:Insert(插入),等价于入队,即插入内容DeleteMin(删除最小者),等价于出队,它的工作是找出、返回和删除优先队列中的最小元素。2.二叉堆二叉堆,堆的...原创 2018-08-21 22:01:10 · 308 阅读 · 0 评论 -
【数据结构】栈链式存储的实现
【数据结构】栈链式存储的实现//堆栈的链式存储实现#include<iostream>using namespace std;typedef int element;typedef struct Node { element data; struct Node *next;}linkstack;void Initial(linkstack ...原创 2018-08-31 19:26:14 · 473 阅读 · 0 评论 -
【数据结构】栈顺序存储的实现
【数据结构】栈顺序存储的实现//栈的顺序存储实现#include<iostream>using namespace std;#define ERROR -1#define Maxsize 10typedef int element;//栈的存储结构:一个一维数组和一个记录栈顶元素位置的变量组成typedef struct { element data[Ma...原创 2018-08-31 16:53:14 · 378 阅读 · 0 评论 -
【数据结构】队列的顺序存储实现-循环队列
【数据结构】队列的顺序存储实现-循环队列//循环队列的实现//队列向前删除,向后新增元素,实现先进先出,如排队#include<iostream>using namespace std;typedef int ElementType;#define MaxSize 10#define ERROR -1//定义循环队列,由一个数组,两个变量front和rear组成...原创 2018-08-31 11:15:49 · 951 阅读 · 0 评论 -
【数据结构与算法分析】第十章 算法技巧设计
【数据结构与算法分析】第十章 算法技巧设计1.贪婪算法三种贪婪算法:Dijkstra算法、Prim算法、Kruskal算法贪婪算法的工作原理:分阶段工作,在每一个阶段,选择最优的,不考虑将来的后果。虽然贪心算法不能对所有问题都得到整体最优解,但对许多问题它能产生整体最优解。如单源最短路经问题,最小生成树问题等。在一些情况下,即使贪心算法不能得到整体最优解,其最终结果却是最优...原创 2018-08-28 17:22:04 · 394 阅读 · 0 评论 -
【数据结构与算法分析】第五章 散列
【数据结构与算法分析】第五章 散列散列是一种用于以常数平均时间执行插入、删除和查找技术。1.散列函数每个关键字被映射到从0到TableSize-1这个范围中的某个数,并放到适当的单元中。(TableSize为散列表的大小,表的大小为素数)一种简单的散列函数:把字符串的ASCII码值加起来typedef unsigned int Index;Index Hsh(const c...原创 2018-08-21 11:16:18 · 517 阅读 · 0 评论 -
【数据结构】队列的链式表示和实现
#include<iostream>using namespace std;typedef int ElementType;#define ERROR -1//定义节点typedef struct Node { ElementType Data; struct Node *Next;}QNode;//定义front和rear指针typedef struct {...原创 2018-08-31 09:57:10 · 618 阅读 · 0 评论 -
【数据结构与算法分析】第六章 优先队列(堆)(二)
【数据结构与算法分析】第六章 优先队列(堆)(二)1.d-堆d-堆是二叉堆的简单推广,所有的节点都有d个儿子,有可能的例外是在底层,如图为一个3-堆2.左式堆左式堆具有结构特性和堆序性质。2.1左式堆的性质节点X的零路径长(Npl(X)):从X到一个没有两个儿子的节点的最短路径长,即具有0个或1个儿子的节点的Npl为0左式堆的性质:对于堆中的每一个节点X,左儿子...原创 2018-08-22 16:53:49 · 403 阅读 · 0 评论 -
【数据结构与算法分析】第四章 树-AVL树 (三)
【数据结构与算法分析】树(三)AVL树介绍AVL树是高度平衡的二叉树,它的特点是:AVL树中任何结点的两个子树的高度最大差别为1。AVL树的查找、插入和删除操作在平均和最坏情况下都是O(logn)。如果在AVL树中插入或删除结点后,使得高度之差大于1,此时,AVL树的平衡状态就被破坏,它就不是一颗平衡二叉树;为了让它重新维持在一个平衡状态,就需要对其进行旋转处理。学AVL树...转载 2018-08-16 15:22:50 · 334 阅读 · 0 评论 -
【数据结构与算法分析】第四章 树(二)
【数据结构与算法分析】第四章 树(二)3.二叉树二叉树是一棵树,其中每个节点都不能有多于两个的儿子。4.表达式树表达式树的树叶是操作数,如常量或变量,其他节点为操作符。其计算过程为中序遍历(左子树,节点,右子树)。如图为一个表达式树:左子树的值为a+(b*c),右子树的值是((d * e)+f)*g,整个树为(a+(b * c))+(((d * e)+f)*g),也称为...原创 2018-08-15 20:43:36 · 215 阅读 · 0 评论 -
【数据结构与算法分析】第四章 树(一)
【数据结构与算法分析】第四章 树(一)1.预备知识树是一些节点的集合,若集合非空,则树由根节点及子树组成。树叶:没有儿子的节点兄弟:具有相同父亲的节点深度:对于任意节点n,n的深度为从根到n的唯一路径长,根的深度为1;高度:对于任意节点n,n的高度为从n到一片树叶的最长路径长,所有树叶的高度为1; 、如图:K节点在树的底层,是一个叶子节点,则一般定义为K的高度在...原创 2018-08-14 21:54:26 · 235 阅读 · 0 评论 -
【数据结构与算法分析】 第三章 表
【数据结构与算法分析】 第三章 表1.抽象数据类型抽象数据类型(ADT)是一些操作的集合。对表、集合、图和他们的操作一起可以看作是抽象数据类型,就像整数、实数和布尔量是数据类型一样。对于集合ADT,可以有并、交、测定大小及取余等操作。或者只要两种操作:并和查找,这两种操作又在该集合上定义了一种不同的ADT2.表ADT在表ADT上运行的操作的集合:PrintList和Make...原创 2018-08-14 16:43:13 · 285 阅读 · 0 评论 -
【数据结构与算法分析】 第三章 栈
栈ADT1栈模型栈是限制插入和删除只能在一个位置上进行的表,该位置是表的末端,叫做栈顶(top),对栈的基本操作有push(进栈)和pop(出栈),前者相当于插入,后者则是删除最后插入的元素。栈是后进先出的(LIFO)表,一般的模型中,存在某个元素位于栈顶,而该元素是唯一的可见元素。只有栈顶元素是可以访问的2 栈的实现栈是一个表,因此任何实现表的方法都能实现栈。两种方法实现...原创 2018-08-14 19:54:45 · 174 阅读 · 0 评论 -
【数据结构与算法分析】 第三章 队列
队列队列也是表,使用队列时插入在一端进行而删除在另一端进行。4.1队列模型基本操作:入队(Enqueue):在表的末端(队尾rear)插入一个元素出队(Dequeue):删除(或返回)在表的开头(队头front)的元素4.2队列的数组实现x入队:让size和rear增1,后置queue[rear]=xx出队:置返回值为queue[front],size减1,然后fr...原创 2018-08-14 20:02:57 · 203 阅读 · 0 评论 -
两种冒泡排序方法以及优化算法
1.向后冒泡图解代码实现:#include<iostream>using namespace std;//向后冒泡,求出每趟最大值,放到len-1位置void BubbleSort(int *arr, int len){ int tmp = 0; int i; for (i = 0;i<len-1;i++) { for (int j = 0;j ...原创 2019-01-08 11:06:22 · 408 阅读 · 0 评论