
数据结构
天的命名词
慢慢来 一切都会有的
展开
-
【算法分析与设计报告】快递终端送货配送系统、基因序列比较、地图染色、文章查重系统、果园篱笆问题(附源码)
假设某快递终端投递站,服务n个小区,小区与快递点之间有道路相连,如下图,边上的权值表示距离。 图1-1 小区快递点图现在设有m包裹,每个包裹都有自己的目的地及总量。 将第一题抽象就是在一张无向图中,找到一棵最小生成树。但是,仅仅是本问题也不仅仅是最小生成树问题,还需考虑以下问题:(1)可以多次走过同一个点以获得更短路径。及在比较路程更短的情况下,快递员可以先回到上一小区,再前往下一小区。(2)一次不一定能够遍历全部顶点,需要向回走。快递员需延边,一个小区一小区走。经过反复分析,多源最短路Floyd算法可以原创 2023-05-18 14:06:24 · 2458 阅读 · 2 评论 -
用Java实现简单的井字棋程序(α-β剪枝)
利用α-β剪枝实现井字棋程序。原创 2022-03-15 17:59:19 · 3257 阅读 · 2 评论 -
【数据结构课设】数据压缩与解压缩(java实现 javafx实现GUI)
利用哈夫曼编码进行信息通讯可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传数据预先编码;在接收端将传来的数据进行译码(复原)。对于双工信道(即可以双向传输信息的信道),每端都需要一个完整的编/译码系统。试对于任意的一段文本(可能是直接输入的,也可能是保存在本地文件中或者网络上的),写一个哈夫曼码的编译码系统。原创 2022-05-22 20:36:57 · 1013 阅读 · 1 评论 -
【数据结构课设】扫雷 (java实现)
目录一、问题描述二、逻辑结构设计三、存储结构设计三、主要操作设计四、技术难点与解决方法五、实现与展示六、详细代码七、游戏内图片一、问题描述设计实现经典扫雷游戏,要求如下: (1) 分初级、中级和高级三个级别,扫雷英雄榜存储每个级别的最好成绩,即挖出所有地雷 且用时最少者。 (2) 选择级别后出现相对应级别的扫雷区域,用户使用鼠标左键单击雷区中任一方块便启动 计时器。 (3) 单击方块,若所揭方块下有雷,则 Game Over;若所揭方块下无雷,原创 2022-05-21 17:07:06 · 5782 阅读 · 6 评论 -
【LeetCode】46.全排列(java)
给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。示例 1:输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例 2:输入:nums = [0,1]输出:[[0,1],[1,0]]示例 3:输入:nums = [1]输出:[[1]]提示:1 <= nums.length <= 6-10 <= .原创 2022-05-10 15:32:41 · 415 阅读 · 0 评论 -
【图】最短路径之旅游规划(java实现)某国准备选择新的首都,并对新首都的位置提出要求:即新首都到该国所有其他城市的平均距离最短
某国准备选择新的首都,并对新首都的位置提出要求:即新首都到该国所有其他城市的平均距离最短(当然并不一定要求城市之间直达,间接道路也是允许的,但必须可达)。已知该国的城市信息,请回答新首都应选择哪一个城市。输入格式:首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每组测试数据第一行输入2个整数n和m,表示该国的城市总数以及现有的道路总数(1≤n≤100, 0≤m≤n*(n-1)/2 ),为方便起见,我们规定城市编号为1到n。 接下来输入m行数据,每行3个整数u、v、d(1≤u,v≤n原创 2022-05-01 21:33:38 · 1541 阅读 · 0 评论 -
【排序】数表,根据一张由N个正整数组成的数表,两两相加得到新数(共有N∗(N−1)/2个),然后将新数按照非递减排序。(java)
编个题面先:小明是个爱学习的好孩子,上课的时候老师布置了这么一个作业题:根据一张由N个正整数组成的数表,两两相加得到新数(共有N∗(N−1)/2个),然后将新数按照非递减排序。举个例子呢就是:如果数表里包含有4个数1,4,3,9,那么正确答案就是4,5,7,10,12,13。请你编程帮助小明完成这道题吧!输入格式:数据有两行,第1行是一个整数N(1<N≤100),表示数表中的整数个数;第2行是数表中的N个整数(0≤整数≤5000),相邻整数间以一个空格分隔。输入...原创 2022-03-25 11:23:17 · 942 阅读 · 0 评论 -
【排序】以数组 intervals 表示若干个区间的集合,请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间(java)
以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/merge-intervals 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。函数接口定义: public static int[][] merge(原创 2022-03-25 11:20:58 · 2076 阅读 · 0 评论 -
【排序】 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。(java)
给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。0 <= nums.length <= 3000−105 <= nums[i] <= 105来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/3sum 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明原创 2022-03-24 19:02:26 · 1719 阅读 · 0 评论 -
【二叉树】二叉树最深间隔最远结点(java)
给定一棵非空二叉树,数据域值为不等于0的整数。请编写程序找出其最深层间隔最远的两个结点,输出这两个结点差的绝对值。如图1所示的各二叉树最深层间隔最远的结点为5和8。如果最深层只有一个结点,则输出0。输入格式:输入为一组用空格间隔的整数,个数不超过200个,表示带空指针信息的二叉树先根序列,其中空指针信息用0表示。输出格式:输出为一个整数,为二叉树最深层间隔最远的两个结点差的绝对值,如果最深层只有一个结点,则输出0。输入样例1:1 2 0 5 0 0 3 6 0 0 8 0 0原创 2022-03-24 15:12:40 · 707 阅读 · 0 评论 -
【二叉树】特殊的圣诞树(java)
圣诞节快到了,每个人都在建造圣诞树,你也不例外。然而,你是特别的,你想建立一棵特别的。你决定建立一个二叉树的圣诞树,并把它的根悬挂在天花板上。对于一颗二叉树,最上面的节点称为根节点,树中的每个节点都可能有0、1或2个子节点,没有子节点的节点称为叶子。除了根节点没有父节点之外,每个节点都有且只有一个父节点。你买了一个装饰包,里面装了一些装饰品,你想用它们来装饰树上所有的叶子,由于被你房间的高度限制,所以树不能比你的房屋高。树的高度是从根到最远叶子的路径上的边数。请注意,每个叶子必须由一个装饰品装饰(每个装饰品原创 2022-03-23 16:30:25 · 1069 阅读 · 0 评论 -
【二叉树】先序序列创建二叉树,输出先序序列、中序序列、后序序列并输出叶子结点数 (java)
对于给定的二叉树,输出其先序序列、中序序列、后序序列并输出叶子结点数。输入格式:二叉树的先序遍历序列。提示:一棵二叉树的先序序列是一个字符串,若字符是‘#’,表示该二叉树是空树,否则该字符是相应结点的数据元素。输出格式:若是非空二叉树,则输出四行内容 第一行是二叉树的先序遍历序列; 第二行是二叉树的中序遍历序列; 第三行是二叉树的后序遍历序列; 第四行是叶子结点数;若是空二叉树 只需输出叶子数0输入样例1:FCA##DB###EHM###G##输出样例1:F原创 2022-03-23 16:25:03 · 1972 阅读 · 0 评论 -
【二叉树】求根结点到x结点的路径(假定结点不重复)(java)
输入样例:输入一行字符序列先序递归构建二叉树。每个字符对应一个结点,#表示空结点。第二行输入一个结点值x。52#3##41##6##3输出样例:输出从根到结点x的路径。5 2 3 代码如下:import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner input =new Scanner(System.in); .原创 2022-03-22 14:22:43 · 2109 阅读 · 0 评论 -
【二叉树】相同的树,给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。(java)
给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。两棵树上的节点数目都在范围 [0, 100] 内 -−104 <= Node.val <= 104函数接口定义:在这里描述函数接口。例如:public static boolean isSameTree(TreeNode p, TreeNode q)裁判测试程序样例:/** * Definition for a binar.原创 2022-03-22 14:21:01 · 912 阅读 · 0 评论 -
【串与数组】三元组顺序表表示的稀疏矩阵加法(java)
三元组顺序表表示的稀疏矩阵加法。输入格式:输入第1行为两个同型矩阵的行数m、列数n,矩阵A的非零元素个数t1,矩阵B的非零元素个数t2。 按行优先顺序依次输入矩阵A三元组数据,共t1行,每行3个数,分别表示非零元素的行标、列标和值。 按行优先顺序依次输入矩阵B三元组数据,共t2行,每行3个数,分别表示非零元素的行标、列标和值。输出格式:输出第1行为相加后矩阵行数m、列数n及非零元素个数t。 输出t行相加后的三元组顺序表结果,每行输出非零元素的行标、列标和值,每行数据之间用空格分隔。输入样例1:4原创 2022-03-21 16:03:10 · 1943 阅读 · 0 评论 -
【串与数组】子串在母串中出现的次数(java)
统计一个长度为3的字符串在另一个字符串中出现的次数。输入格式:在第一行输入长度小于20的长的字符串。在字符串中不要出现换行符,空格,制表符。 在第二行输入长度为3的字符串。在字符串中不要出现换行符,空格,制表符。输出格式:直接输出结果,没有任何附加字符。输入样例:asdfgasdrfasasd输出样例:2代码如下:import java.util.Scanner;public class Main { public static void main(String[]原创 2022-03-21 16:01:37 · 1086 阅读 · 0 评论 -
【串与数组】字符串中最长重复子串(java)
输入一字符串,找出其中出现的相同且长度最长的子串,输出该子串的长度。规定字符串本身不能称为自己的子串。请编写效率尽可能高的程序完成这个棘手的任务。输入格式:输入为一个字符串,表示报文,包含不超过10000个字母。输出格式:输出为一个整数,表示破解出的密文串的长度。输入样例1:xabceabcf输出样例1:3输入样例2:xyabcabcayx输出样例2:4代码如下:import java.util.Scanner;public class Main { pub原创 2022-03-21 15:59:45 · 1589 阅读 · 0 评论 -
【串与数组】我们称一个字符串S的子串T为好中缀,如果T是去除S中满足如下条件的两个子串p和q后剩余的字符串。(java)
我们称一个字符串S的子串T为好中缀,如果T是去除S中满足如下条件的两个子串p和q后剩余的字符串。(1)p是S的前缀,q是S的后缀;(2)p=q;(3)p和q是满足条件(1)(2)的所有子串中的第二长者。注意一个字符串不能称为自己的前缀或后缀。好中缀至少为空串,其长度大于等于0,不能为负数。输入格式:输入为一个字符串S,包含不超过100000个字母。输出格式:输出为一个整数,表示好中缀的长度。输入样例1:abcabcxxxabcabc输出样例1:9输入样例2:xacbacba原创 2022-03-21 15:57:38 · 528 阅读 · 0 评论 -
【串与数组】旋转图像,给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。(java)
给定一个 n×n 的二维矩阵matrix 表示一个图像。请你将图像顺时针旋转 90 度。你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。matrix.length == nmatrix[i].length == n1 <= n <= 20-1000 <= matrix[i][j] <= 1000来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/rota...原创 2022-03-21 15:53:28 · 759 阅读 · 0 评论 -
【栈与队列】请实现一个MyQueue类,实现出队,入队,求队列长度.(java)
请实现一个MyQueue类,实现出队,入队,求队列长度.实现入队函数 void push(int x); 实现出队函数 int pop(); 实现求队列长度函数 int size();输入格式:每个输入包含1个测试用例。每个测试用例第一行给出一个正整数 n (n <= 10^6) ,接下去n行每行一个数字,表示一种操作: 1 x : 表示从队尾插入x,0<=x<=2^31-1。 2 : 表示队首元素出队。 3 : 表示求队列长度。输出格式:对于操作2,若队列为空,则输出原创 2022-03-17 11:24:53 · 2861 阅读 · 2 评论 -
【栈与队列】给定一个中缀表达式,请编写程序计算该表达式的值。(java)
给定一个中缀表达式,请编写程序计算该表达式的值。表达式包含+、-、*、\、(、),所有运算均为二元运算,操作数均为正整数,但可能不止一位,不超过5位。 运算结果为整数。 除法运算结果若为小数则进行截尾取整。若除法运算中除数为0,则输出ILLEGAL。输入格式:输入为一个字符串,表示中缀表达式。输出格式:输出为一个整数,为表达式的值;或者为一个字符串ILLEGAL。输入样例:5+(10*2)-6输出样例:19输入样例:8*(999+1)输出样例:8原创 2022-03-17 11:22:49 · 3018 阅读 · 0 评论 -
【栈与队列】列车车厢重排 (java)
火车站的列车调度铁轨的结构如下所示: (Exit) 9 8 7 6 5 4 3 2 1 <==== ………………………………… <==== 8 4 2 5 3 9 1 6 7 (Entrance) 两端分别是一条入口(Entrance)轨道和一条出口(Exit)轨道,它们之间可能有N条平行的轨道。每趟列车从入口可以选择任意一条轨道进入排队,以方便最后有序从出口离开。在前例中有9趟列车,在入口处按照{8,4,2,5,3,9,1,6,7}的顺序排队等待进入。如果要求它们必须按序号递减的顺序从出口离开原创 2022-03-17 11:20:45 · 1779 阅读 · 0 评论 -
【栈与队列】有一个死胡同,宽度刚好只能让一辆汽车通过,最先开来的汽车要最后才能倒退出去。给定一个汽车开来的序列和一个可能的倒车出去的序列,请判断汽车能否都倒退出去(java)
有一个死胡同,宽度刚好只能让一辆汽车通过,偏偏老有汽车开到死胡同来,这下麻烦了,最先开来的汽车要最后才能倒退出去。给定一个汽车开来的序列和一个可能的倒车出去的序列,请判断汽车能否都倒退出去,若能则输出Yes,否则输出No。输入格式:首先输入一个整数T,表示测试数据的组数,然后是T组测试数据。每组测试数据首先输入一个正整数n(n≤10),代表开来的汽车数,然后输入2n个整数,其中,前n个整数表示汽车开来的序列,后n个整数表示汽车可能倒出的序列。输出格式:对于每组测试,判断能否倒车出该死胡同,若原创 2022-03-17 11:17:51 · 1688 阅读 · 0 评论 -
【栈与队列】括号匹配检验-简单版 输入一行字符,其中包括任意合法的字符。要求编写程序,检验其中的括号 ( 和 ) 是否匹配。(java)
输入一行字符,其中包括任意合法的字符。要求编写程序,检验其中的括号 ( 和 ) 是否匹配。输入格式:输入一行不超过1000个字符的字符串,以换行符结尾。输出格式:输出括号匹配的检验结果,如果匹配,则输出 Yes!,否则输出 No!。输入样例:(nb)(t(y&f4)8)输出样例:在这里给出相应的输出。例如:Yes!代码如下 :import java.util.Scanner;public class Main { public sta原创 2022-03-17 10:51:37 · 902 阅读 · 0 评论 -
【数据结构线性结构】带密码的约瑟夫问题(c语言实现)
带密码的约瑟夫问题:编号为1,2,......,n的n个人按照顺时针方向围坐一圈,每个人有自己的编号(正整数)、姓名和密码(正整数)三个数据项。一开始任选一个正整数作为报数上限值,从第一个人开始顺时针方向自1开始报数,报到m时停止报数。报m 的人出列,将他的密码作为新的m值,从他在顺时针方向的下一个人开始重新报数,如此下去,直到所有人全部出队为止。设计一个程序来求出出队顺序。输入格式:输入人数 n(1≤n≤50),再逐行输入每个人的信息(各项之间用逗号隔开),然后输入报数上限值m。输出格式:原创 2022-03-16 11:58:47 · 2556 阅读 · 0 评论 -
【数据结构线性结构】打字问题(java)
小明正使用Microsoft Word打一篇文档,文档只包含a-z的小写字母和空格,在打字过程中可能会一次或多次按下Home键、End键、←方向键、→方向键、Insert键、Backspace键。请编写程序,给定小明在键盘上按键的序列,输出小明屏幕上最终显示的文本。 提示:Home键会将当前光标移至文本开始位置,End键当前光标移至文本尾,←键和→键会使当前光标左移或右移一个位置(如果光标在文档头则无法左移,光标在文档尾则无法右移),Insert键会在插入和替换文本间切换(默认是插入状态),Backspac原创 2022-03-16 11:54:47 · 581 阅读 · 0 评论 -
【数据结构线性结构】A-B 给定两个按元素值递增的有序顺序表A和B,集合的元素为30000以内的正整数,编写程序求A-B。(java)
给定两个按元素值递增的有序顺序表A和B,集合的元素为30000以内的正整数,编写程序求A-B。输入格式:第一行输入两个表的表长第二行输入第一个顺序表元素 第三行输入第二个顺序表元素输出格式:输出顺序表A中不在顺序表B中的元素个数。输入样例:5 51 2 3 4 53 4 5 6 7输出样例:2代码如下:import java.util.Scanner;public class Main { public static void main(Str.原创 2022-03-16 11:52:08 · 1520 阅读 · 0 评论 -
【数据结构线性结构】 递增有序顺序表的插入(java)
实验目的:1、掌握线性表的基本知识 2、深入理解、掌握并灵活运用线性表。3、熟练掌握线性表的存储结构及主要运算的实现 已知顺序表L递增有序,将X插入到线性表的适当位置上,保证线性表有序。输入格式:第1行输入顺序表长度,第2行输入递增有序的顺序表,第3行输入要插入的数据元素X。输出格式:对每一组输入,在一行中输出插入X后的递增的顺序表。输入样例:在这里给出一组输入。例如:51 3 5 7 96输出样例:在这里给出相应的输出。例如:1,3,5,6,7,9,代码如下import jav原创 2022-03-16 11:47:13 · 1586 阅读 · 1 评论 -
【数据结构线性结构】小明的第一个扑克牌“魔术”(队列或链表操作)(java)
小明刚上小学,学会了第一个扑克牌“魔术”,到处给人表演。魔术的内容是这样的:他手里握着一叠扑克牌:A,2,…J,Q,K 一共13张。他先自己精心设计它们的顺序,然后正面朝下拿着,开始表演。只见他先从最下面拿一张放到最上面,再从最下面拿一张翻开放桌子上,是A;然后再从最下面拿一张放到最上面,再从最下面拿一张翻开放桌子上,是2;…如此循环直到手中只有一张牌,翻开放桌子上,刚好是K。这时,桌上牌的顺序是:A,2,3,4,5,6,7,8,9,10,J,Q,K请你计算一下,小明最开始的时候手里牌的顺序是怎样原创 2022-03-16 11:42:45 · 865 阅读 · 0 评论 -
【数据结构中时间复杂度的问题】编程求x^y 最后三位数表示的整数(java)
编程求x ^y 最后三位数表示的整数。输入格式:输入不超过最大整数的两个数x、y输出格式:输出x^y最后三位数import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int m = sc.nextInt(); int n = sc.nextInt();原创 2022-03-15 23:35:49 · 1840 阅读 · 0 评论 -
【数据结构中时间复杂度的问题】相同数字的最大连续子序列 (java)
找出相同数字的最长连续子序列。输入格式:输入一个以0结束的整数序列。输出格式:输出序列中相同数字组成的最长连续子序列的长度。import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner input = new Scanner(System.in); int[] list = new int[1000000]; int原创 2022-03-15 23:33:17 · 1378 阅读 · 1 评论 -
【数据结构中时间复杂度的问题】n以内素数个数 (java)
请统计出n以内所有的素数个数。import java.util.BitSet;import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner input=new Scanner(System.in); int n=input.nextInt(); System.out.println(isPrime(n)); }原创 2022-03-15 23:30:30 · 442 阅读 · 0 评论 -
【数据结构中的时间复杂度问题】数组中的第k大数字 java实现
给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。其中: 1 <= k <= nums.length <= 10^4 -10^4 <= nums[i] <= 10^4函数接口定义:public static int findKthLargest(int[] nums, int k) { public static int findKthLargest(int[] n原创 2022-03-15 23:27:26 · 162 阅读 · 0 评论