数据结构-知识
n0th1n9
这个作者很懒,什么都没留下…
展开
-
队列用c++实现
由于经常用到队列,因此将队列的实现, 代码入下typedef struct Node{ int data; struct Node *next;}Node;typedef struct Queue{ Node *head, *tail;}Queue;void Initi(Queue &Q){ Q.head = (Node *)malloc(sizeof原创 2017-11-29 00:03:34 · 518 阅读 · 0 评论 -
排序-直接插入排序
输入格式:输入第一行给出正整数N(≤105),随后一行给出N个(长整型范围内的)整数,其间以空格分隔。输出格式:在一行中输出从小到大排序后的结果,数字间以1个空格分隔,行末不得有多余空格。输入样例:114 981 10 -17 0 -20 29 50 8 43 -5输出样例:-20 -17 -5 0 4 8 10 29 43 50 981/* 直接插原创 2017-11-23 01:00:36 · 199 阅读 · 0 评论 -
排序-改良冒泡排序
输入格式:输入第一行给出正整数N(≤105),随后一行给出N个(长整型范围内的)整数,其间以空格分隔。输出格式:在一行中输出从小到大排序后的结果,数字间以1个空格分隔,行末不得有多余空格。输入样例:114 981 10 -17 0 -20 29 50 8 43 -5输出样例:-20 -17 -5 0 4 8 10 29 43 50 981/* 改原创 2017-11-23 00:57:40 · 629 阅读 · 1 评论 -
排序-快速排序
输入格式:输入第一行给出正整数N(≤105),随后一行给出N个(长整型范围内的)整数,其间以空格分隔。输出格式:在一行中输出从小到大排序后的结果,数字间以1个空格分隔,行末不得有多余空格。输入样例:114 981 10 -17 0 -20 29 50 8 43 -5输出样例:-20 -17 -5 0 4 8 10 29 43 50 981/*原创 2017-11-23 00:54:25 · 332 阅读 · 2 评论 -
排序-归并排序
void Merge(int left, int mid, int right, int *a){ int temp[MAX]; int r_pos = 0, low = left, high = mid + 1; while(low <= mid && high <= right) { if(a[low] < a[high]) {原创 2017-11-23 00:49:59 · 209 阅读 · 0 评论 -
排序-希尔排序
输入格式:输入第一行给出正整数N(≤105),随后一行给出N个(长整型范围内的)整数,其间以空格分隔。输出格式:在一行中输出从小到大排序后的结果,数字间以1个空格分隔,行末不得有多余空格。输入样例:114 981 10 -17 0 -20 29 50 8 43 -5输出样例:-20 -17 -5 0 4 8 10 29 43 50 981/* 希尔排原创 2017-11-23 01:04:41 · 202 阅读 · 0 评论 -
排序-c++自带排序
输入格式:输入第一行给出正整数N(≤105),随后一行给出N个(长整型范围内的)整数,其间以空格分隔。输出格式:在一行中输出从小到大排序后的结果,数字间以1个空格分隔,行末不得有多余空格。输入样例:114 981 10 -17 0 -20 29 50 8 43 -5输出样例:-20 -17 -5 0 4 8 10 29 43 50 981/* 用原创 2017-11-23 01:05:42 · 609 阅读 · 0 评论 -
排序-堆排序
输入格式:输入第一行给出正整数N(≤105),随后一行给出N个(长整型范围内的)整数,其间以空格分隔。输出格式:在一行中输出从小到大排序后的结果,数字间以1个空格分隔,行末不得有多余空格。输入样例:114 981 10 -17 0 -20 29 50 8 43 -5输出样例:-20 -17 -5 0 4 8 10 29 43 50 981#include原创 2017-11-28 00:14:08 · 227 阅读 · 0 评论 -
KMP中next和nextval算法简析
转自豆瓣大神总结,感觉这个讲得简单易懂,所以无耻的当个搬运工,谢谢大神总结数据结构中,在串的这节,其实难度不大,关键是模式匹配的问题,而在模式匹配中要数KMP算法的难度最大,而KMP的next&nextval的计算则成了学习的重中之重。面对好多学校的教程跳过不讲,而教材里的公式又难以理解,好多自学的同仁们往往在这上面费尽心思。现在把我的学习心得发出来共享,如有错误,还望不吝指正。呵呵~转载 2017-12-22 13:09:58 · 494 阅读 · 1 评论 -
哈希查找之平方探测
平方探测的原理平方探测是由根据 哈希函数算出的哈希值 不断向左向右进行探测即:探测的过程中(即 Hashval + i * i) Hashval是不变的,直至找到合适位置后,重新给Hashval赋值(见下面代码部分)。平方探测的整体流程平方探测的整体流程和线性探测基本相似:①根据哈希函数算出Hashval,判断HashTable[Hashval]是否被占用,如果没被占用,则H原创 2017-12-02 13:16:38 · 12635 阅读 · 4 评论 -
AVL树(一)之 图文解析 和 C语言的实现
转载-原文地址:https://www.cnblogs.com/skywang12345/p/3576969.html概要本章介绍AVL树。和前面介绍"二叉查找树"的流程一样,本章先对AVL树的理论知识进行简单介绍,然后给出C语言的实现。本篇实现的二叉查找树是C语言版的,后面章节再分别给出C++和Java版本的实现。建议:若您对"二叉查找树"不熟悉,建议先学完"二叉查找树"转载 2017-11-14 23:01:28 · 448 阅读 · 0 评论 -
根据后序遍历序列和中序遍历序列求前序遍历序列
首先理解概念:前序遍历:访问根结点的操作发生在遍历其左右子树之前。中序遍历:访问根结点的操作发生在遍历其左右子树之中(间)。后序遍历:访问根结点的操作发生在遍历其左右子树之后。eg:后序遍历为DBCEFGHA,中序遍历为EDCBAHFG,求前序遍历(网上例子)解:首先 看后序遍历DBCEFGHA,A为总根节点 然后 寻找中序遍历EDCBAHFG中A位置,则EDCB在A的左枝,HF原创 2017-11-12 01:19:34 · 7667 阅读 · 1 评论 -
排序-链式基数排序
链式基数排序原创 2017-11-30 01:27:08 · 1748 阅读 · 0 评论 -
图的深度和广度遍历
概述 图的遍历是指从图中的任一顶点出发,对图中的所有顶点访问一次且只访问一次。图的遍历操作和树的遍历操作功能相似。图的遍历是图的一种基本操作,图的其它算法如求解图的连通性问题,拓扑排序,求关键路径等都是建立在遍历算法的基础之上。由于图结构本身的复杂性,所以图的遍历操作也较复杂,主要表现在以下四个方面:① 在图结构中,没有一个“自然”的首结点,图中任意一个顶点都可作为第一个被访问的结转载 2017-10-29 22:45:22 · 1221 阅读 · 0 评论 -
并查集详解
并查集是我暑假从高手那里学到的一招,觉得真是太精妙的设计了。以前我无法解决的一类问题竟然可以用如此简单高效的方法搞定。不分享出来真是对不起party了。(party:我靠,关我嘛事啊?我跟你很熟么?)来看一个实例,杭电1232畅通工程首先在地图上给你若干个城镇,这些城镇都可以看作点,然后告诉你哪些对城镇之间是有道路直接相连的。最后要解决的是整幅图的连通性问题。比如随意给你两个点,让你判转载 2017-11-01 01:14:47 · 141 阅读 · 0 评论 -
排序-折半插入排序
输入格式:输入第一行给出正整数N(≤105),随后一行给出N个(长整型范围内的)整数,其间以空格分隔。输出格式:在一行中输出从小到大排序后的结果,数字间以1个空格分隔,行末不得有多余空格。输入样例:114 981 10 -17 0 -20 29 50 8 43 -5输出样例:-20 -17 -5 0 4 8 10 29 43 50 981/* 折半插原创 2017-11-23 01:02:59 · 250 阅读 · 0 评论