
SDUT C语言 数据结构
Key_MQL
所有的努力都不会白费 所有的坚持都因为梦想
展开
-
AOE网关键路径的算法,最最最最直接的算法,一学就会
先了解一下AOE网和关键路径:如果在有向图中用顶点表示事件,用弧表示活动,用弧上的权表示活动持续时间,称该带权有向图(即有向网)为边表示活动的网(activity on edge network),简称AOE网。在AOE网中,只有一个顶点代表的事件发生后,从该顶点出发的各个弧所代表的活动才能开始,只有以弧头关联一个顶点的各个弧所代表的活动都已结束,该顶点所代表的事件才能发生。一项工程可原创 2016-08-18 09:22:34 · 13719 阅读 · 0 评论 -
数据结构实验之查找二:平衡二叉树
Problem Description根据给定的输入序列建立一棵平衡二叉树,求出建立的平衡二叉树的树根。Input输入一组测试数据。数据的第1行给出一个正整数N(n Output输出平衡二叉树的树根。Example Input588 70 61 96 120Example Output70Hint原创 2016-12-10 21:16:52 · 426 阅读 · 0 评论 -
数据结构实验之查找一:二叉排序树
Problem Description对应给定的一个序列可以唯一确定一棵二叉排序树。然而,一棵给定的二叉排序树却可以由多种不同的序列得到。例如分别按照序列{3,1,4}和{3,4,1}插入初始为空的二叉排序树,都得到一样的结果。你的任务书对于输入的各种序列,判断它们是否能生成一样的二叉排序树。Input输入包含若干组测试数据。每组数据的第1行给出两个正整数N (n原创 2016-12-10 20:48:25 · 426 阅读 · 0 评论 -
SDUTACM 顺序表应用8:最大子段和之动态规划法
Problem Description 给定n(1负数时定义子段和为0,依此定义,所求的最优值为: Max{0,a[i]+a[i+1]+…+a[j]},1 注意:本题目要求用动态规划法求解,只需要输出最大子段和的值。Input第一行输入整数n(1第二行依次输入n个整数,对应顺序表中存放的每个数据元素值。Output输出所求的最大子段和原创 2016-10-08 16:38:57 · 375 阅读 · 0 评论 -
SDYTACM 顺序表应用7:最大子段和之分治递归法
Problem Description 给定n(1当所给的整数均为负数时定义子段和为0,依此定义,所求的最优值为: Max{0,a[i]+a[i+1]+…+a[j]},1<=i<=j<=n。 例如,当(a[1],a[2],a[3],a[4],a[5],a[6])=(-2,11,-4,13,-5,-2)时,最大子段和为20。 注意:本题目要求用分治递归法求解,除了需要输出最大子段原创 2016-10-08 15:55:37 · 430 阅读 · 0 评论 -
SDUTACM 顺序表应用4-2:元素位置互换之逆置算法(数据改进)
Problem Description一个长度为len(1注意:交换操作会有多次,每次交换都是在上次交换完成后的顺序表中进行。Input第一行输入整数len(1第二行输入len个整数,作为表里依次存放的数据元素;第三行输入整数t(1之后t行,每行输入一个整数m(1Output输出一共t行,每行依次输出本次交换完成后顺序表里所有元素。E原创 2016-10-08 14:41:00 · 390 阅读 · 0 评论 -
SDUTACM 数据结构实验之二叉树六:哈夫曼编码
题目描述字符的编码方式有多种,除了大家熟悉的ASCII编码,哈夫曼编码(Huffman Coding)也是一种编码方式,它是可变字长编码。该方法完全依据字符出现概率来构造出平均长度最短的编码,称之为最优编码。哈夫曼编码常被用于数据文件压缩中,其压缩率通常在20%~90%之间。你的任务是对从键盘输入的一个字符串求出它的ASCII编码长度和哈夫曼编码长度的比值。输入 输入数据有多组原创 2016-08-11 16:37:12 · 536 阅读 · 0 评论 -
SDUTACM 数据结构实验之链表八:Farey序列
Problem DescriptionFarey序列是一个这样的序列:其第一级序列定义为(0/1,1/1),这一序列扩展到第二级形成序列(0/1,1/2,1/1),扩展到第三极形成序列(0/1,1/3,1/2,2/3,1/1),扩展到第四级则形成序列(0/1,1/4,1/3,1/2,2/3,3/4,1/1)。以后在每一级n,如果上一级的任何两个相邻分数a/c与b/d满足(c+d)I原创 2016-10-07 22:14:08 · 638 阅读 · 0 评论 -
SDUTACM 数据结构实验之栈七:出栈序列判定
Problem Description给一个初始的入栈序列,其次序即为元素的入栈次序,栈顶元素可以随时出栈,每个元素只能入栈依次。输入一个入栈序列,后面依次输入多个序列,请判断这些序列是否为所给入栈序列合法的出栈序列。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个出栈序列,但4,3,5,1,2就不可能是该序列的出栈序列。假设压入栈的所有数字均不原创 2016-10-07 18:27:36 · 357 阅读 · 0 评论 -
SDUTACM 数据结构实验之栈四:括号匹配
Problem Description 给你一串字符,不超过50个字符,可能包括括号、数字、字母、标点符号、空格,你的任务是检查这一串字符中的( ) ,[ ],{ }是否匹配。Input 输入数据有多组,处理到文件结束。Output 如果匹配就输出“yes”,不匹配输出“no”Example Inputsin(20+10){[}]Example Ou原创 2016-10-06 15:54:16 · 375 阅读 · 0 评论 -
SDUTACM 数据结构实验之栈三:后缀式求值
Problem Description对于一个基于二元运算符的后缀表示式(基本操作数都是一位正整数),求其代表的算术表达式的值。Input输入一个算术表达式的后缀式字符串,以‘#’作为结束标志。Output求该后缀式所对应的算术表达式的值,并输出之。Example Input59*684/-3*+#Example Output原创 2016-10-06 15:39:51 · 449 阅读 · 0 评论 -
SDUTACM 数据结构实验之栈二:一般算术表达式转换成后缀式
Problem Description对于一个基于二元运算符的算术表达式,转换为对应的后缀式,并输出之。Input输入一个算术表达式,以‘#’字符作为结束标志。Output输出该表达式转换所得到的后缀式。Example Inputa*b+(c-d/e)*f#Example Outputab*cde/-f*+Hi原创 2016-10-06 14:43:19 · 537 阅读 · 0 评论 -
数据结构实验之查找四:二分查找
Problem Description在一个给定的无重复元素的递增序列里,查找与给定关键字相同的元素,若存在则输出找到的位置,不存在输出-1。Input一组输入数据,输入数据第一行首先输入两个正整数n ( n 随后m行输入m个待查找的关键字keyOutput若在给定的序列中能够找到与关键字key相等的元素,则输出位序(序号从0开始),否则输出-1原创 2016-12-10 22:06:59 · 364 阅读 · 0 评论 -
数据结构实验之查找六:顺序查找
Problem Description在一个给定的无序序列里,查找与给定关键字相同的元素,若存在则输出找到的元素在序列中的位序和需要进行的比较次数,不存在则输出"No",序列位序从1到n,要求查找从最后一个元素开始,序列中无重复元素。Input连续多组数据输入,每组输入数据第一行首先输入两个整数n(n Output若存在则输出元素在序列中的位序和比较原创 2016-12-10 22:20:09 · 358 阅读 · 0 评论 -
SDUTACM 数据结构实验之查找七:线性之哈希表
题目描述根据给定的一系列整数关键字和素数p,用除留余数法定义hash函数H(Key)=Key%p,将关键字映射到长度为p的哈希表中,用线性探测法解决冲突。重复关键字放在hash表中的同一位置。输入连续输入多组数据,每组输入数据第一行为两个正整数N(N = N的最小素数),N是关键字总数,p是hash表长度,第2行给出N个正整数关键字,数字间以空格间隔。输出原创 2016-08-18 17:10:36 · 874 阅读 · 0 评论 -
SDUTACM 数据结构实验之查找五:平方之哈希表
题目描述给定的一组无重复数据的正整数,根据给定的哈希函数建立其对应hash表,哈希函数是H(Key)=Key%P,P是哈希表表长,P是素数,处理冲突的方法采用平方探测方法,增量di=±i^2,i=1,2,3,...,m-1输入输入一组测试数据,数据的第1行给出两个正整数N(N = 2N的最小素数),N是要插入到哈希表的元素个数,P是哈希表表长;第2行给出N个无重复元素的原创 2016-08-18 19:08:31 · 544 阅读 · 0 评论 -
SDUTACM 数据结构实验之图论八:欧拉回路
题目描述在哥尼斯堡的一个公园里,有七座桥将普雷格尔河中两个岛及岛与河岸连接起来。能否走过这样的七座桥,并且每桥只走一次?瑞士数学家欧拉最终解决了这个问题并由此创立了拓扑学。欧拉通过对七桥问题的研究,不仅圆满地回答了哥尼斯堡七桥问题,并证明了更为广泛的有关一笔画的三条结论,人们通常称之为欧拉定理。对于一个连通图,通常把从某结点出发一笔画成所经过的路线叫做欧拉路。人们又通常把一原创 2016-08-16 14:25:43 · 404 阅读 · 0 评论 -
SDUTACM 数据结构实验之图论七:驴友计划
题目描述做为一个资深驴友,小新有一张珍藏的自驾游线路图,图上详细的标注了全国各个城市之间的高速公路距离和公路收费情况,现在请你编写一个程序,找出一条出发地到目的地之间的最短路径,如果有多条路径最短,则输出过路费最少的一条路径。输入连续T组数据输入,每组输入数据的第一行给出四个正整数N,M,s,d,其中N(2 输出在同一行中输出路径长度和收费总额,数据间用空格间隔。原创 2016-08-17 19:39:55 · 611 阅读 · 0 评论 -
SDUTACM 数据结构实验之图论六:村村通公路
题目描述当前农村公路建设正如火如荼的展开,某乡镇政府决定实现村村通公路,工程师现有各个村落之间的原始道路统计数据表,表中列出了各村之间可以建设公路的若干条道路的成本,你的任务是根据给出的数据表,求使得每个村都有公路连通所需要的最低成本。输入连续多组数据输入,每组数据包括村落数目N(N 输出输出使每个村庄都有公路连通所需要的最低成本,如果输入数据不能使所有村庄畅通,则输出-1,表原创 2016-08-16 16:32:08 · 1196 阅读 · 0 评论 -
SDUTACM 数据结构实验之图论四:迷宫探索
题目描述有一个地下迷宫,它的通道都是直的,而通道所有交叉点(包括通道的端点)上都有一盏灯和一个开关;请问如何从某个起点开始在迷宫中点亮所有的灯并回到起点?输入连续T组数据输入,每组数据第一行给出三个正整数,分别表示地下迷宫的结点数N(1 输出若可以点亮所有结点的灯,则输出从S开始并以S结束的序列,序列中相邻的顶点一定有边,否则只输出部分点亮的灯的结点序列,最后原创 2016-08-16 10:49:04 · 545 阅读 · 0 评论 -
SDUTACM 数据结构实验:连通分量个数
题目描述 在无向图中,如果从顶点vi到顶点vj有路径,则称vi和vj连通。如果图中任意两个顶点之间都连通,则称该图为连通图,否则,称该图为非连通图,则其中的极大连通子图称为连通分量,这里所谓的极大是指子图中包含的顶点个数极大。例如:一个无向图有5个顶点,1-3-5是连通的,2是连通的,4是连通的,则这个无向图有3个连通分量。 输入 第一行是一个整数T,表示有T组测试样例原创 2016-08-16 19:27:04 · 418 阅读 · 0 评论 -
SDUTACM 数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历
题目描述给定一个无向连通图,顶点编号从0到n-1,用广度优先搜索(BFS)遍历,输出从某个顶点出发的遍历序列。(同一个结点的同层邻接点,节点编号小的优先遍历)输入输入第一行为整数n(0对于每组数据,第一行是三个整数k,m,t(0<k<100,0<m<(k-1)*k/2,0< t<k),表示有m条边,k个顶点,t为遍历的起始顶点。下面的m行,每行是空格隔开的两个整数u,v,表示一原创 2016-08-15 15:15:45 · 647 阅读 · 0 评论 -
SDUTACM 数据结构实验之图论二:基于邻接表的广度优先搜索遍历
题目描述给定一个无向连通图,顶点编号从0到n-1,用广度优先搜索(BFS)遍历,输出从某个顶点出发的遍历序列。(同一个结点的同层邻接点,节点编号小的优先遍历)输入输入第一行为整数n(0对于每组数据,第一行是三个整数k,m,t(0<k<100,0<m<(k-1)*k/2,0< t<k),表示有m条边,k个顶点,t为遍历的起始顶点。 下面的m行,每行是空格隔开的两个整数原创 2016-08-15 16:48:22 · 479 阅读 · 0 评论 -
SDUTACM 图的深度遍历
题目描述请定一个无向图,顶点编号从0到n-1,用深度优先搜索(DFS),遍历并输出。遍历时,先遍历节点编号小的。输入输入第一行为整数n(0 输出输出有n行,对应n组输出,每行为用空格隔开的k个整数,对应一组数据,表示DFS的遍历结果。示例输入14 40 10 20 32 3示例输出0 1 2 3提示 #include#incl原创 2016-08-15 19:14:48 · 503 阅读 · 0 评论 -
数据结构实验之排序二:交换排序
Problem Description冒泡排序和快速排序都是基于"交换"进行的排序方法,你的任务是对题目给定的N个(长整型范围内的)整数从小到大排序,输出用冒泡和快排对这N个数排序分别需要进行的数据交换次数。Input连续多组输入数据,每组数据第一行给出正整数N(N ≤ 10^5),随后给出N个整数,数字间以空格分隔。Output输出数据占一行,代表原创 2016-12-11 19:44:34 · 518 阅读 · 0 评论 -
数据结构实验之查找三:树的种类统计
Problem Description随着卫星成像技术的应用,自然资源研究机构可以识别每一个棵树的种类。请编写程序帮助研究人员统计每种树的数量,计算每种树占总数的百分比。Input输入一组测试数据。数据的第1行给出一个正整数N (n Output按字典序输出各种树的种类名称和它占的百分比,中间以空格间隔,小数点后保留两位小数。Exampl原创 2016-12-11 14:11:36 · 402 阅读 · 0 评论 -
SDUTACM 数据结构实验之二叉树四:还原二叉树
Problem Description给定一棵二叉树的先序遍历序列和中序遍历序列,要求计算该二叉树的高度。Input输入数据有多组,每组数据第一行输入1个正整数N(1 为树中结点总数,随后2行先后给出先序和中序遍历序列,均是长度为N的不包含重复英文字母(区分大小写)的字符串。Output 输出一个整数,即该二叉树的高度。Example I原创 2016-10-26 14:54:27 · 468 阅读 · 0 评论 -
SDUTACM 数据结构实验之二叉树二:遍历二叉树
Problem Description已知二叉树的一个按先序遍历输入的字符序列,如abc,,de,g,,f,,, (其中,表示空结点)。请建立二叉树并按中序和后序的方式遍历该二叉树。Input连续输入多组数据,每组数据输入一个长度小于50个字符的字符串。Output每组输入数据对应输出2行:第1行输出中序遍历序列;第2行输出后序遍历序列。原创 2016-10-26 14:23:18 · 656 阅读 · 0 评论 -
SDUTACM 数据结构实验之链表九:双向链表
Problem Description学会了单向链表,我们又多了一种解决问题的能力,单链表利用一个指针就能在内存中找到下一个位置,这是一个不会轻易断裂的链。但单链表有一个弱点——不能回指。比如在链表中有两个节点A,B,他们的关系是B是A的后继,A指向了B,便能轻易经A找到B,但从B却不能找到A。一个简单的想法便能轻易解决这个问题——建立双向链表。在双向链表中,A有一个指针指向了节点B,同时原创 2016-09-29 21:46:12 · 874 阅读 · 0 评论 -
SDUTACM n a^o7 !
题目描述 All brave and intelligent fighters, next you will step into a distinctive battleground which is full of sweet and happiness. If you want to win the battle, you must do warm-up according to原创 2016-08-16 10:02:19 · 548 阅读 · 0 评论 -
SDUTACM 图结构练习——最小生成树
题目描述 有n个城市,其中有些城市之间可以修建公路,修建不同的公路费用是不同的。现在我们想知道,最少花多少钱修公路可以将所有的城市连在一起,使在任意一城市出发,可以到达其他任意的城市。 输入 输入包含多组数据,格式如下。第一行包括两个整数n m,代表城市个数和可以修建的公路个数。(n 剩下m行每行3个正整数a b c,代表城市a 和城市b之间可以修建一条公路,代原创 2016-08-16 16:19:26 · 366 阅读 · 0 评论 -
SDUTACM 完美网络
题目描述完美网络是连通网络的基础上要求去掉网络上任意一条线路,网络仍然是连通网络。求一个连通网络要至少增加多少条边可以成为完美网络。输入第一行输入一个数T代表测试数据个数(T(0 输出对于每个样例输出最少增加多少线路可以成为完美网络。每行输出一个结果。示例输入23 11 23 21 22 3示例输出21原创 2016-08-17 10:22:28 · 897 阅读 · 0 评论 -
SDUTACM 数据结构实验之排序七:选课名单
题目描述随着学校规模的扩大,学生人数急剧增加,选课名单的输出也成为一个繁重的任务,我校目前有在校生3万多名,两千多门课程,请根据给定的学生选课清单输出每门课的选课学生名单。输入输入第一行给出两个正整数N( N ≤ 35000)和M(M ≤ 2000),其中N是全校学生总数,M是课程总数,随后给出N行,每行包括学生姓名拼音+学号后两位(字符串总长度小于10)、数字S代表该原创 2016-08-18 20:16:41 · 514 阅读 · 0 评论 -
SDUTACM 数据结构实验之排序六:希尔排序
题目描述我们已经学习了各种排序方法,知道在不同的情况下要选择不同的排序算法,以期达到最好的排序效率;对于待排序数据来说,若数据基本有序且记录较少时, 直接插入排序的效率是非常好的,希尔排序就是针对一组基本有序的少量数据记录进行排序的高效算法。你的任务是对于给定的数据进行希尔排序,其中增量dk=n/(2^k)(k=1,2,3……)输入连续输入多组数据,每组输入数据的第一行原创 2016-08-19 10:37:45 · 655 阅读 · 0 评论 -
SDUTACM 数据结构实验之排序四:寻找大富翁
题目描述2015胡润全球财富榜调查显示,个人资产在1000万以上的高净值人群达到200万人,假设给出N个人的个人资产值,请你快速找出排前M位的大富翁。输入首先输入两个正整数N( N ≤ 10^6)和M(M ≤ 10),其中N为总人数,M为需要找出的大富翁数目,接下来给出N个人的个人资产,以万元为单位,个人资产数字为正整数,数字间以空格分隔。输出一行数据,按降原创 2016-08-22 15:07:01 · 734 阅读 · 0 评论 -
SDUTACM 数据结构实验之排序五:归并求逆序数
题目描述对于数列a1,a2,a3…中的任意两个数ai,aj (i aj,那么我们就说这两个数构成了一个逆序对;在一个数列中逆序对的总数称之为逆序数,如数列 1 6 3 7 2 4 9中,(6,4)是一个逆序对,同样还有(3,2),(7,4),(6,2),(6,3)等等,你的任务是对给定的数列求出数列的逆序数。输入输入数据N(N 输出输出逆原创 2016-08-22 15:45:11 · 400 阅读 · 0 评论 -
SDUTACM 顺序表应用1:多余元素删除之移位算法
题目描述一个长度不超过10000数据的顺序表,可能存在着一些值相同的“多余”数据元素(类型为整型),编写一个程序将“多余”的数据元素从顺序表中删除,使该表由一个“非纯表”(值相同的元素在表中可能有多个)变成一个“纯表”(值相同的元素在表中只保留第一个)。要求: 1、必须先定义线性表的结构与操作函数,在主函数中借助该定义与操作函数调用实现问题功能; 2、本题的原创 2016-08-25 09:04:39 · 425 阅读 · 0 评论 -
SDUTACM 数据结构实验之栈一:进制转换
题目描述输入一个十进制整数,将其转换成对应的R(2输入第一行输入需要转换的十进制数;第二行输入R。输出输出转换所得的R进制数。示例输入12798示例输出2377提示 #include#includestruct hh { int data[10010]; int top;};void main(){ int n,r原创 2016-08-25 10:11:51 · 452 阅读 · 0 评论 -
SDUTACM 数据结构实验之栈六:下一较大值(二)
题目描述对于包含n(1输入 输入有多组,第一行输入t(1<=t<=10),表示输入的组数;以后是 t 组输入:每组先输入n,表示本组序列的元素个数,之后依次输入本组的n个元素。输出 输出有多组,每组之间输出一个空行(最后一组之后没有);每组输出按照本序列元素的顺序,依次逐行输出当前元素及其查找结果,两者之间以-->间隔。示例输入24 12 2原创 2016-08-25 10:35:38 · 354 阅读 · 0 评论 -
SDUTACM 双向队列
题目描述 想想双向链表……双向队列的定义差不多,也就是说一个队列的队尾同时也是队首;两头都可以做出队,入队的操作。现在给你一系列的操作,请输出最后队列的状态;命令格式:LIN X X表示一个整数,命令代表左边进队操作;RIN X 表示右边进队操作;ROUTLOUT 表示出队操作;输入第一行包含一个整数M(M以下M行每行包含一条命原创 2016-08-25 19:40:45 · 442 阅读 · 0 评论