
数据结构
数据结构
Guuuuuu老师儿
当初的算法竞赛题目博客的留言评论就不回复了,时间太久已经忘干净了,抱歉~
展开
-
Mergeable Stack ZOJ - 4016
Mergeable Stack ZOJ - 4016题目链接这道题真的很坑爹,一开始做的时候感觉很简单的一道关于栈操作的题,然后就用了stl里的stack结果爆内存了,然后改了三次还是不...原创 2018-04-08 15:09:14 · 853 阅读 · 0 评论 -
7-26 Harry Potter's Exam(25 point(s))(Floyd算法)
7-26 Harry Potter's Exam(25 point(s))In Professor McGonagall's class of Transfiguration, Harry Potter is learning how to transform one object into another by some spells. He has learnt that, t原创 2017-11-12 10:46:10 · 4208 阅读 · 0 评论 -
7-13 求链式线性表的倒数第K项(20 point(s))
7-13 求链式线性表的倒数第K项(20 point(s))给定一系列正整数,请设计一个尽可能高效的算法,查找倒数第K个位置上的数字。输入格式:输入首先给出一个正整数K,随后是若干正整数,最后以一个负整数表示结尾(该负数不算在序列内,不要处理)。输出格式:输出倒数第K个位置上的数据。如果这个位置不存在,输出错误信息NULL。输入样例:4 1 2 3 4 5原创 2017-11-12 10:14:58 · 837 阅读 · 1 评论 -
7-12 树种统计(25 point(s))(BST)
7-12 树种统计(25 point(s))随着卫星成像技术的应用,自然资源研究机构可以识别每一棵树的种类。请编写程序帮助研究人员统计每种树的数量,计算每种树占总数的百分比。输入格式:输入首先给出正整数N(≤105),随后N行,每行给出卫星观测到的一棵树的种类名称。种类名称由不超过30个英文字母和空格组成(大小写不区分)。输出格式:按字典序递增输出各种树的种类原创 2017-11-10 21:50:54 · 823 阅读 · 0 评论 -
7-10 树的同构(25 point(s))
7-10 树的同构(25 point(s))给定两棵树T1和T2。如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是“同构”的。例如图1给出的两棵树就是同构的,因为我们把其中一棵树的结点A、B、G的左右孩子互换后,就得到另外一棵树。而图2就不是同构的。图1图2现给定两棵树,请你判断它们是否是同构的。输入格式:输入给出2棵二叉树树的信息原创 2017-11-10 21:49:20 · 306 阅读 · 0 评论 -
7-9 还原二叉树(25 point(s))(根据前序遍历和中序遍历建树)
7-9 还原二叉树(25 point(s))给定一棵二叉树的先序遍历序列和中序遍历序列,要求计算该二叉树的高度。输入格式:输入首先给出正整数N(≤50),为树中结点总数。下面两行先后给出先序和中序遍历序列,均是长度为N的不包含重复英文字母(区别大小写)的字符串。输出格式:输出为一个整数,即该二叉树的高度。输入样例:9ABDFGHIECFDHGIBEAC原创 2017-11-10 21:48:23 · 6917 阅读 · 0 评论 -
7-8 List Leaves(25 point(s))
7-8 List Leaves(25 point(s))Given a tree, you are supposed to list all the leaves in the order of top down, and left to right.Input Specification:Each input file contains one test case. Fo原创 2017-11-10 21:45:30 · 461 阅读 · 0 评论 -
7-7 是否同一棵二叉搜索树(25 point(s))
7-7 是否同一棵二叉搜索树(25 point(s))给定一个插入序列就可以唯一确定一棵二叉搜索树。然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到。例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树,都得到一样的结果。于是对于输入的各种插入序列,你需要判断它们是否能生成一样的二叉搜索树。输入格式:输入包含若干组测试数据。每组数据的第1行原创 2017-11-10 21:43:51 · 967 阅读 · 0 评论 -
7-5 银行业务队列简单模拟(25 point(s))
7-5 银行业务队列简单模拟(25 point(s))设某银行有A、B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 —— 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客。给定到达银行的顾客序列,请按业务完成的顺序输出顾客序列。假定不考虑顾客先后到达的时间间隔,并且当不同窗口同时处理完2个顾客时,A窗口顾客优先输出。输入格式:输入为一行正整数,其原创 2017-11-10 21:41:48 · 3059 阅读 · 0 评论 -
6-9 求二叉树高度(20 point(s))
6-9 求二叉树高度(20 point(s))本题要求给定二叉树的高度。函数接口定义:int GetHeight( BinTree BT );其中BinTree结构定义如下:typedef struct TNode *Position;typedef Position BinTree;struct TNode{ ElementType Data;原创 2017-11-02 08:40:39 · 1570 阅读 · 0 评论 -
7-23 哥尼斯堡的“七桥问题”(25 point(s))
7-23 哥尼斯堡的“七桥问题”(25 point(s))哥尼斯堡是位于普累格河上的一座城市,它包含两个岛屿及连接它们的七座桥,如下图所示。可否走过这样的七座桥,而且每桥只走过一次?瑞士数学家欧拉(Leonhard Euler,1707—1783)最终解决了这个问题,并由此创立了拓扑学。这个问题如今可以描述为判断欧拉回路是否存在的问题。欧拉回路是指不令笔离开纸面,可画过原创 2017-11-02 09:34:58 · 1863 阅读 · 0 评论 -
7-25 畅通工程之局部最小花费问题(35 分)(最小生成树问题)
7-25 畅通工程之局部最小花费问题(35 分)某地区经过对城镇交通状况的调查,得到现有城镇间快速道路的统计数据,并提出“畅通工程”的目标:使整个地区任何两个城镇间都可以实现快速交通(但不一定有直接的快速道路相连,只要互相间接通过快速路可达即可)。现得到城镇道路统计表,表中列出了任意两城镇间修建快速路的费用,以及该道路是否已经修通的状态。现请你编写程序,计算出全地区畅通需要的最低成原创 2017-11-14 09:18:16 · 3853 阅读 · 1 评论 -
7-22 朋友圈(25 分) (并查集)
7-22 朋友圈(25 分)某学校有N个学生,形成M个俱乐部。每个俱乐部里的学生有着一定相似的兴趣爱好,形成一个朋友圈。一个学生可以同时属于若干个不同的俱乐部。根据“我的朋友的朋友也是我的朋友”这个推论可以得出,如果A和B是朋友,且B和C是朋友,则A和C也是朋友。请编写程序计算最大朋友圈中有多少人。输入格式:输入的第一行包含两个正整数N(≤30000)和M(≤1000),分原创 2017-11-14 09:16:41 · 819 阅读 · 0 评论 -
7-20 电话聊天狂人(25 分) (哈希)
7-20 电话聊天狂人(25 分)给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人。输入格式:输入首先给出正整数N(≤105),为通话记录条数。随后N行,每行给出一条通话记录。简单起见,这里只列出拨出方和接收方的11位数字构成的手机号码,其中以空格分隔。输出格式:在一行中给出聊天狂人的手机号码及其通话次数,其间以空格分隔。如果这样的人不唯一,则输出狂人原创 2017-11-14 09:12:03 · 1110 阅读 · 0 评论 -
7-21 Hashing(25 分)
7-21 Hashing(25 分)The task of this problem is simple: insert a sequence of distinct positive integers into a hash table, and output the positions of the input numbers. The hash function is def原创 2017-11-14 09:13:28 · 1319 阅读 · 4 评论 -
7-19 PAT Judge(25 分)(结构体排序)
7-19 PAT Judge(25 分)The ranklist of PAT is generated from the status list, which shows the scores of the submissions. This time you are supposed to generate the ranklist for PAT.Input Specif原创 2017-11-14 09:10:10 · 1465 阅读 · 0 评论 -
7-18 寻找大富翁(25 分) (堆排序)
7-18 寻找大富翁(25 分)2015年胡润研究院的调查显示,截至2014年9月,个人资产在600万元以上高净值人群达290万人。假设给出N个人的个人资产值,请快速找出资产排前M位的大富翁。输入格式:输入首先给出两个正整数N(≤106)和M(≤10),其中N为总人数,M为需要找出的大富翁数;接下来一行给出N个人的个人资产值,以百万元为单位,为不超过长整型范围的整数。原创 2017-11-14 09:08:59 · 3345 阅读 · 0 评论 -
7-17 The World's Richest(25 分)(结构体排序)
7-17 The World's Richest(25 分)Forbes magazine publishes every year its list of billionaires based on the annual ranking of the world's wealthiest people. Now you are supposed to simulate this原创 2017-11-14 09:08:08 · 508 阅读 · 0 评论 -
7-16 两个有序链表序列的交集(20 分)
7-16 两个有序链表序列的交集(20 分)已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的交集新链表S3。输入格式:输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。输出格式:在一行中输出两个输入序列的交集序列,数字间用空格分开,结尾不能有多余空格;若新链表为空,输出NULL。输入原创 2017-11-14 09:05:57 · 2574 阅读 · 1 评论 -
7-15 两个有序链表序列的合并(20 分)
7-15 两个有序链表序列的合并(20 分)已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的并集新非降序链表S3。输入格式:输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。输出格式:在一行中输出合并后新的非降序链表,数字间用空格分开,结尾不能有多余空格;若新链表为空,输出NULL。原创 2017-11-14 09:04:43 · 3718 阅读 · 0 评论 -
7-4 表达式转换(25 point(s))(栈的应用)
7-4 表达式转换(25 point(s))算术表达式有前缀表示法、中缀表示法和后缀表示法等形式。日常使用的算术表达式是采用中缀表示法,即二元运算符位于两个运算数中间。请设计程序将中缀表达式转换为后缀表达式。输入格式:输入在一行中给出不含空格的中缀表达式,可包含+、-、*、\以及左右括号(),表达式不超过20个字符。输出格式:在一行中输出转换后的后缀表达式,要求不同原创 2017-11-10 21:40:43 · 3791 阅读 · 0 评论 -
7-2 列车厢调度(25 point(s))(栈的经典题目)
7-2 列车厢调度(25 point(s)) 1 ====== <--移动方向 / 3 ===== \ 2 ====== -->移动方向大家或许在某些数据结构教材上见到过“列车厢调度问题”(当然没见过也不要紧)。今天,我们就来实际操作一下列车厢的调度。对照上方的ASCII字符图,问题描述如下:原创 2017-11-10 21:39:19 · 5908 阅读 · 1 评论 -
6-20 No Less Than X in BST(20 point(s))
6-20 No Less Than X in BST(20 point(s))You are supposed to output, in decreasing order, all the elements no less thanX in a binary search tree T.Format of function:void Print_NLT( Tree T原创 2017-11-08 18:35:16 · 1161 阅读 · 0 评论 -
6-19 Count Connected Components(20 point(s))
6-19 Count Connected Components(20 point(s))Write a function to count the number of connected components in a given graph.Format of functions:int CountConnectedComponents( LGraph Graph );原创 2017-11-08 18:34:46 · 1613 阅读 · 0 评论 -
6-18 Two Stacks In One Array(20 point(s))
6-18 Two Stacks In One Array(20 point(s))Write routines to implement two stacks using only one array. Your stack routines should not declare an overflow unless every slot in the array is used.原创 2017-11-08 18:34:30 · 1279 阅读 · 1 评论 -
6-17 Shortest Path [2](25 point(s))(dijkstra)
6-17 Shortest Path [2](25 point(s))Write a program to find the weighted shortest distances from any vertex to a given source vertex in a digraph. It is guaranteed that all the weights are posi原创 2017-11-08 18:34:13 · 916 阅读 · 0 评论 -
6-15 求单链表结点的阶乘和(15 point(s))
6-15 求单链表结点的阶乘和(15 point(s))本题要求实现一个函数,求单链表L结点的阶乘和。这里默认所有结点的值非负,且题目保证结果在int范围内。函数接口定义:int FactorialSum( List L );其中单链表List的定义如下:typedef struct Node *PtrToNode;struct Node { int D原创 2017-11-07 11:18:57 · 487 阅读 · 0 评论 -
6-14 Add Two Polynomials(20 point(s))
6-14 Add Two Polynomials(20 point(s))Write a function to add two polynomials. Do not destroy the input. Use a linked list implementation with a dummy head node.Note: The zero polynomial is rep原创 2017-11-07 11:17:12 · 2553 阅读 · 1 评论 -
6-13 Percolate Up and Down(20 point(s))
6-13 Percolate Up and Down(20 point(s))Write the routines to do a "percolate up" and a "percolate down" in a binary min-heap.Format of functions:void PercolateUp( int p, PriorityQueue H );原创 2017-11-07 11:15:13 · 2493 阅读 · 1 评论 -
6-12 二叉搜索树的操作集(30 point(s))
6-12 二叉搜索树的操作集(30 point(s))本题要求实现给定二叉搜索树的5种常用操作。函数接口定义:BinTree Insert( BinTree BST, ElementType X );BinTree Delete( BinTree BST, ElementType X );Position Find( BinTree BST, ElementType X原创 2017-11-07 11:14:22 · 5952 阅读 · 3 评论 -
6-11 Level-order Traversal(25 point(s))
6-11 Level-order Traversal(25 point(s))Write a routine to list out the nodes of a binary tree in "level-order". List the root, then nodes at depth 1, followed by nodes at depth 2, and so on. Y原创 2017-11-07 11:12:34 · 756 阅读 · 0 评论 -
6-16 Topological Sort(25 point(s))
6-16 Topological Sort(25 point(s))Write a program to find the topological order in a digraph.Format of functions:bool TopSort( LGraph Graph, Vertex TopOrder[] );where LGraph is defined原创 2017-11-02 08:27:02 · 1283 阅读 · 0 评论 -
6-1 单链表逆转(20 point(s))
6-1 单链表逆转(20 point(s))本题要求实现一个函数,将给定的单链表逆转。函数接口定义:List Reverse( List L );其中List结构定义如下:typedef struct Node *PtrToNode;struct Node { ElementType Data; /* 存储结点数据 */ PtrToNode原创 2017-11-02 08:29:48 · 5829 阅读 · 0 评论 -
7-1 一元多项式的乘法与加法运算(20 point(s))
7-1 一元多项式的乘法与加法运算(20 point(s))设计函数分别求两个一元多项式的乘积与和。输入格式:输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。输出格式:输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数。数字间以空格分隔,但结尾不原创 2017-11-10 21:38:07 · 7489 阅读 · 3 评论 -
7-10 树的同构(25 point(s))
7-10 树的同构(25 point(s))给定两棵树T1和T2。如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是“同构”的。例如图1给出的两棵树就是同构的,因为我们把其中一棵树的结点A、B、G的左右孩子互换后,就得到另外一棵树。而图2就不是同构的。图1图2现给定两棵树,请你判断它们是否是同构的。输入格式:输入给出2棵二叉树树的信息原创 2017-11-10 21:36:12 · 329 阅读 · 0 评论 -
6-8 先序输出叶结点(15 point(s))
6-8 先序输出叶结点(15 point(s))本题要求按照先序遍历的顺序输出给定二叉树的叶结点。函数接口定义:void PreorderPrintLeaves( BinTree BT );其中BinTree结构定义如下:typedef struct TNode *Position;typedef Position BinTree;struct TNode{原创 2017-11-02 08:39:24 · 1482 阅读 · 0 评论 -
6-7 Deque(25 point(s))
6-7 Deque(25 point(s))A "deque" is a data structure consisting of a list of items, on which the following operations are possible:Push(X,D): Insert item X on the front end of deque D.Pop(D原创 2017-11-02 08:38:01 · 2524 阅读 · 0 评论 -
6-6 带头结点的链式表操作集(20 point(s))
6-6 带头结点的链式表操作集(20 point(s))本题要求实现带头结点的链式表操作集。函数接口定义:List MakeEmpty(); Position Find( List L, ElementType X );bool Insert( List L, ElementType X, Position P );bool Delete( List L, Posit原创 2017-11-02 08:36:29 · 1558 阅读 · 1 评论 -
6-5 链式表操作集(20 point(s))
6-5 链式表操作集(20 point(s))本题要求实现链式表的操作集。函数接口定义:Position Find( List L, ElementType X );List Insert( List L, ElementType X, Position P );List Delete( List L, Position P );其中List结构定义如下:ty原创 2017-11-02 08:34:51 · 1772 阅读 · 1 评论 -
6-4 链式表的按序号查找(10 point(s))
6-4 链式表的按序号查找(10 point(s))本题要求实现一个函数,找到并返回链式表的第K个元素。函数接口定义:ElementType FindKth( List L, int K );其中List结构定义如下:typedef struct LNode *PtrToLNode;struct LNode { ElementType Data;原创 2017-11-02 08:33:44 · 1482 阅读 · 1 评论