数据结构
AC_Niceuo
这个作者很懒,什么都没留下…
展开
-
图的深度优先遍历和广度优先遍历
广度优先遍历(BFS)(1)从某个顶点V出发,访问该顶点的所有邻接点V1,V2..VN(2)从邻接点V1,V2...VN出发,再访问他们各自的所有邻接点(3)重复上述步骤,直到所有的顶点都被访问过(1)从顶点V1出发,v1入队,访问V1,V1的邻接点有V2 V3 V4,将它们入队,v1出队队列:V2 V3 V4(2)转载 2017-08-14 17:04:02 · 384 阅读 · 0 评论 -
数据结构实验之串一:KMP简单应用
Problem Description给定两个字符串string1和string2,判断string2是否为string1的子串。 Input 输入包含多组数据,每组测试数据包含两行,第一行代表string1(长度小于1000000),第二行代表string2(长度小于1000000),string1和string2中保证不出现空格。 Output 对于每组输入数据,若string2是s原创 2017-08-24 10:46:21 · 537 阅读 · 1 评论 -
图结构练习——最短路径
Problem Description 给定一个带权无向图,求节点1到节点n的最短路径。 Input 输入包含多组数据,格式如下。 第一行包括两个整数n m,代表节点个数和边的个数。(n<=100)剩下m行每行3个正整数a b c,代表节点a和节点b之间有一条边,权值为c。 Output 每组输出占一行,仅输出从1到n的最短路径权值。(保证最短路径存在) Example原创 2017-08-24 09:47:24 · 537 阅读 · 0 评论 -
数据结构实验之查找七:线性之哈希表
Problem Description根据给定的一系列整数关键字和素数p,用除留余数法定义hash函数H(Key)=Key%p,将关键字映射到长度为p的哈希表中,用线性探测法解决冲突。重复关键字放在hash表中的同一位置。Input连续输入多组数据,每组输入数据第一行为两个正整数N(N = N的最小素数),N是关键字总数,p是hash表长度,第2行给出N个正整数关键字,数字间以空格间隔。原创 2017-08-24 09:25:13 · 296 阅读 · 0 评论 -
数据结构实验之查找五:平方之哈希表
Problem Description给定的一组无重复数据的正整数,根据给定的哈希函数建立其对应hash表,哈希函数是H(Key)=Key%P,P是哈希表表长,P是素数,处理冲突的方法采用平方探测方法,增量di=±i^2,i=1,2,3,...,m-1Input输入包含多组测试数据,到 EOF 结束。每组数据的第1行给出两个正整数N(N = 2N的最小素数),N是要插入到哈希表的元素个原创 2017-08-24 09:16:25 · 296 阅读 · 0 评论 -
数据结构实验之查找一:二叉排序树
Problem Description对应给定的一个序列可以唯一确定一棵二叉排序树。然而,一棵给定的二叉排序树却可以由多种不同的序列得到。例如分别按照序列{3,1,4}和{3,4,1}插入初始为空的二叉排序树,都得到一样的结果。你的任务书对于输入的各种序列,判断它们是否能生成一样的二叉排序树。Input输入包含若干组测试数据。每组数据的第1行给出两个正整数N (n < = 10)和L,分别原创 2017-08-23 14:58:41 · 370 阅读 · 0 评论 -
数据结构实验之查找二:平衡二叉树
平衡二叉树对于二叉查找树,尽管查找、插入及删除操作的平均运行时间为O(logn),但是它们的最差运行时间都是O(n),原因在于对树的形状没有限制。平衡二叉树又称为AVL树,它或者是一棵空树,或者是有下列性质的二叉树:它的左子树和右子树都是平衡二叉树,且左右子树的深度之差的绝对值不超过1。二叉树的的平衡因子BF为:该结点的左子树的深度减去它的右子树的深度,则平衡二叉树转载 2017-08-23 14:34:43 · 1094 阅读 · 0 评论 -
数据结构实验之排序六:希尔排序
Problem Description我们已经学习了各种排序方法,知道在不同的情况下要选择不同的排序算法,以期达到最好的排序效率;对于待排序数据来说,若数据基本有序且记录较少时, 直接插入排序的效率是非常好的,希尔排序就是针对一组基本有序的少量数据记录进行排序的高效算法。你的任务是对于给定的数据进行希尔排序,其中增量dk=n/(2^k)(k=1,2,3……)Input连续输入多组数据,每组原创 2017-08-22 11:15:56 · 355 阅读 · 0 评论 -
数据结构实验之排序三:bucket sort
Problem Description根据人口普查结果,知道目前淄博市大约500万人口,你的任务是帮助人口普查办公室按年龄递增的顺序输出每个年龄有多少人,其中不满1周岁的按0岁计算,1到2周岁的按1岁计算,依次类推,大于等于100岁的老人全部按100岁计算。Input 输入第一行给出一个正整数N(<=5000000),随后连续给出N个整数表示每个人的年龄,数字间以空格分隔。Output原创 2017-08-25 10:10:34 · 394 阅读 · 0 评论 -
查找练习 hash——出现过的数字
Problem Description有一个数据字典,里面存有n个数字(n<=100000),小明现在接到一个任务,这项任务看起来非常简单——给定m个数字,分别查询这m个数字是否出现在字典之中;但是考虑到数据量的问题,小明找到了善于编程的你,希望你可以帮他解决这个问题。 Input 输入数据只有一组! 第一行包含两个整数n m,分别代表字典中数字的个数和要查询的数字的个数。接着n行代表原创 2017-08-25 10:06:26 · 463 阅读 · 0 评论 -
数据结构实验之栈四:括号匹配
Problem Description 给你一串字符,不超过50个字符,可能包括括号、数字、字母、标点符号、空格,你的任务是检查这一串字符中的( ) ,[ ],{ }是否匹配。Input 输入数据有多组,处理到文件结束。 Output 如果匹配就输出“yes”,不匹配输出“no” Example Inputsin(20+10){[}]Example Outputyesn原创 2017-08-25 09:40:37 · 503 阅读 · 0 评论 -
数据结构实验之栈一:进制转换
Problem Description输入一个十进制非负整数,将其转换成对应的 R (2 <= R <= 9) 进制数,并输出。Input第一行输入需要转换的十进制非负整数;第二行输入 R。Output输出转换所得的 R 进制数。Example Input12798Example Output2377Hint十进制转化成2-9进制数:十进制数除以进制数保存原创 2017-08-25 09:13:06 · 859 阅读 · 0 评论 -
C语言/C++函数调用的三种参数传递方式
// 熟悉C++函数的三种参数传递方法:1传值(兼容C)。2传址(兼容C)。3传引用(C++特性)。// 以下代码在VC++6.0里调试成功。#include#includeusing std::string;using std::cout;using std::endl;void funSayHelloWorld(string s) //函数原型--参数以传值方式传递{ cou转载 2017-08-14 16:40:19 · 1436 阅读 · 0 评论 -
数据结构实验之栈三:后缀式求值
http://blog.csdn.net/sgbfblog/article/details/8001651链接为转载的 后缀表达式转换成中缀表达式详解Problem Description对于一个基于二元运算符的后缀表示式(基本操作数都是一位正整数),求其代表的算术表达式的值。 Input输入一个算术表达式的后缀式字符串,以‘#’作为结束标志。 Output求该后缀式所对原创 2017-08-17 17:07:58 · 346 阅读 · 1 评论 -
数据结构实验之栈二:一般算术表达式转换成后缀式
Problem Description对于一个基于二元运算符的算术表达式,转换为对应的后缀式,并输出之。 Input输入一个算术表达式,以‘#’字符作为结束标志。 Output输出该表达式转换所得到的后缀式。 Example Inputa*b+(c-d/e)*f#Example Outputab*cde/-f*+Hint#includeint switc(char c原创 2017-08-17 16:58:24 · 370 阅读 · 0 评论 -
2506-完美网络
Problem Description完美网络是连通网络的基础上要求去掉网络上任意一条线路,网络仍然是连通网络。求一个连通网络要至少增加多少条边可以成为完美网络。Input第一行输入一个数T代表测试数据个数(T<=20)。每个测试数据第一行2个数n,m 分别代表网络基站数和基站间线路数。基站的序号为从1到n。接下来m行两个数代表x,y 代表基站x,y间有一条线路。(0 < n < m <原创 2017-08-17 15:47:44 · 346 阅读 · 0 评论 -
数据结构——邻接矩阵/邻接表
邻接矩阵:是表示顶点之间相邻关系的矩阵。用邻接矩阵表示法表示图,需要一个用于存储邻接矩阵的二维数组,一个用于存储顶点信息的一维数组。存储结构表示如下:#define max 32767 //表示最大值,即无穷 #define mv 100 //最大顶点数 typedef char ver; //假设顶点的数据类型为字符型typedef int arc; //这两个定义可原创 2017-08-14 16:30:20 · 1138 阅读 · 0 评论 -
数据结构实验:连通分量个数
Problem Description 在无向图中,如果从顶点vi到顶点vj有路径,则称vi和vj连通。如果图中任意两个顶点之间都连通,则称该图为连通图, 否则,称该图为非连通图,则其中的极大连通子图称为连通分量,这里所谓的极大是指子图中包含的顶点个数极大。例如:一个无向图有5个顶点,1-3-5是连通的,2是连通的,4是连通的,则这个无向图有3个连通分量。 Input 第一行是一个整数原创 2017-08-17 15:27:01 · 338 阅读 · 0 评论 -
KMP算法
在百度中,看到了不少关于KMP算法的介绍。普通的粗暴方式的时间复杂度一度飙到O(NM),而KMP算法所耗费的时间复杂度降到了O(N+M),这可以说是一个壮举。而粗暴的处理方式也称为BF算法,这种算法很容易想明白,BF算法的思想就是将目标串S的第一个字符与模式串P的第一个字符进行匹配,若相等,则继续比较S的第二个字符和P的第二个字符;若不相等,则比较S的第二个字符和P的第一个字符,依原创 2017-08-24 15:43:53 · 439 阅读 · 0 评论