
数据结构算法h
h
ReflectMirroring
希望你的努力配得上你的野心
展开
-
用哈夫曼树对句子进行编码
package nine;import java.util.ArrayList;import java.util.Collections;import java.util.HashMap;import java.util.List;import java.util.Map;/* * 需求分析: * 将句子it-is-a-tall-ill-lia-编程写出这句子的哈弗曼树和哈夫曼...原创 2020-02-09 12:27:35 · 454 阅读 · 0 评论 -
由数组进行层次建树
package seven;import java.util.ArrayList;import java.util.Iterator;/* * 需求分析: * 先是有一个表示树的数组,利用这个数组结合队列生成一棵层次的树 * 这个数组a保存树的数据特点,a[0]存放的是这个数组存放的有效位置,其他位置都是无效的 * 从a[1]开始存放树的每一个节点 * 结合队列是建立两个队列,一个...原创 2020-02-09 12:26:35 · 867 阅读 · 0 评论 -
判断随机树是否是满二叉树(未完成)
package seven;/* * 先有一个根节点,然后每一次都是一个均匀分布产生一个随机数, * 当随机数大于等于0.5就是根节点的左孩子,小于0.5就是根节点的右孩子 * 若根节点已经有两个孩子,下次再产生的随机数大于等于0.5就进入根节点的左孩子, * 然后继续产生随机数,和上面一样,大于等于0.5就是当前节点的左孩子,小于0.5就是右孩子 *...原创 2020-02-09 12:24:45 · 126 阅读 · 0 评论 -
先序人机交互创建树
package seven;import java.util.Scanner;/* * 需求分析: * 需求是先序生成一棵树.每一个节点都是用户输入的, * 当到第几个节点时,电脑会提示用户输入 * 思路: * 想利用递归来实现,递归结束的条件是当用户输入的是null时,结束当前树的递归 */public class FirstCreate{ public static ...原创 2020-02-09 12:22:12 · 168 阅读 · 0 评论 -
使用队列输出n层杨辉三角
package six;/* * 2.杨辉三角,建议:输出15层,用链表,用队列 * 思路: * 创建一个队列,先输入一个1,当队列不为空的时候 */public class Triangle{ public static void main(String[] args) { Integer[] a=new Integer[20]; team<Integer>...原创 2020-02-09 12:20:50 · 497 阅读 · 0 评论 -
循环数组队列(模拟北饭三的旋转火窝)
package six;/* *1.循环数组(模拟北饭三的旋转火窝) 设置缓冲区的大小是4,即数组length=4,为了让每一种情况出现的可能性大点。 为了构建逻辑循环数组,下标取模。在数组中有一个head和tail标记, 分别模拟旋转火窝的吃货和端菜的服务员,刚开始因为没食物,还不能开始吃。 建一个随机数,大于等于0.5的话服务员就端上菜,小于0.5吃货吃菜。 上菜和开吃都要有个判...原创 2020-02-09 12:16:41 · 155 阅读 · 1 评论 -
二叉树
建立(这里写大概思路,无代码)广度优先(breadth first)先是一个数组a,数组的第一个数存的是这个数组的有效位置,后面开始存的是这个树,例如数组a0位置是这个树一共有的节点,后面都是树的每一个节点的值,我们要将这个层次的数组树转化成链表的树,结合队列就能完成先创建两个队列,比如Q1和Q2,Q1存放树的每一个节点,Q2存放Q1对应节点在数组的下标位置,先是new Node...原创 2019-10-22 21:49:54 · 128 阅读 · 0 评论 -
实现+ - * /的数学式子运算
package five;import java.util.HashMap;import java.util.Map;/* * 2.实现+ - * /的数学式子运算 */public class Operation{ public static void main(String[] args) throws Exception { Operation op=new Ope...原创 2019-10-13 22:00:01 · 230 阅读 · 0 评论 -
括号匹配
package five;/* * 1.括号匹配 * */public class Match{ public static void main(String[] args) throws Exception { Match m=new Match(); String str=new String("[({<<>>})]"); System....原创 2019-10-13 21:59:11 · 292 阅读 · 0 评论 -
栈实现链表/多项式
package five;import java.util.ArrayList;import java.util.List;/*用栈实现链表遍历用栈实现两个多项式合并两个多项式相乘多项式输入格式要求为:输入完整的多项式,如 5x^3+4x^2(可以使用分隔的操作,提取出多项式的各个指数和对应的系数) *///栈类public class Inn<T>{ ...原创 2019-10-13 21:58:11 · 199 阅读 · 0 评论 -
判断出入顺序是否符合栈
package four;import java.util.ArrayList;import java.util.Arrays;import java.util.List;/*4.判断出入顺序是否符合栈例如:入栈的顺序是:a b c d e,一共有120种排序方式,代码判断那种排序符合出栈方式(用递归输出 a,b,c,d,e 的 120 种排列方式)代码包括两个方法:4.1...原创 2019-10-13 21:57:01 · 647 阅读 · 0 评论 -
多项式合并
package four;//1.两个多项式链表的合并public class Multinomial{ public static void main(String[] args) throws Exception { Multinomial m =new Multinomial(); NodeList nodelist1=new NodeList(); NodeList ...原创 2019-10-13 21:56:04 · 1273 阅读 · 0 评论 -
约瑟夫环问题
package four;/*2. 约瑟夫环问题(两道题)2.1:我们班上50个人组成一个大圈,先是1-7报数,数字是5号的同学出来,重复凑够10个人然后剩下40个人1-11报数,数字是9号的同学出来, 重复凑够10个人,选出的20个人组成一个小圈,1-13报数,把11挑出来,重复凑够 5 个人,这五个人就是被选出出去找食物的人,他们回来不了了, 没被选中的 15 人重新回到大圈里....原创 2019-10-13 21:54:54 · 254 阅读 · 0 评论 -
双向链表
/* * 这个代码有bug,比如在链表的length()+1的位 * 置删除和插入就会出现问题,但是现在我不想改了,以后有空就回来看看吧! */package four;/*3. 双向链表3.1在一个节点前后各插入一个节点,然后删除自己3.2在当前节点,遍历这个节点的前面所有节点和后面所有节点3.3遍历这个链表的3*length()-4的节点,遍历方式是第一个 开始到最后一...原创 2019-10-13 21:53:53 · 165 阅读 · 2 评论 -
简单链表
package second;import java.util.Scanner;public class LinkList{ public static void main(String[] args) throws Exception { LinkList ll=new LinkList(); ll.create(); //创建节点 ll.show(ll); //显示...原创 2019-10-13 21:51:42 · 238 阅读 · 0 评论 -
数组倒置
/* * 数组倒置 */package frist;public class Second{ public static void main(String[] args) { data a[]=new data[10]; for(int i=0;i<10;i++) { a[i]=new data(i); } for(int i=0;i<a.le...原创 2019-10-13 21:48:17 · 400 阅读 · 0 评论 -
链表和斐波拉奇数列
链表的递归查询链表的倒置链表的两个节点互换斐波拉奇数列package third;import java.util.Scanner;public class Convert{ public static void main(String[] args) { System.out.println("链表大小"); Scanner in = new Scanner(S...原创 2019-09-21 19:07:08 · 212 阅读 · 0 评论 -
百钱百鸡
/* * 百钱百鸡*/package frist;import java.util.Scanner;public class First{ public static void main(String[] args) { Scanner in=new Scanner(System.in); System.out.println("输入你有的钱"); int x=in.n...原创 2019-09-21 19:08:33 · 110 阅读 · 0 评论 -
数组的交换
数组的两两交换,两种交换:相邻交换,四个一组,隔着交换,如1和3,2和4交换package second;import java.util.Scanner;public class ExchangeArray{ public static void main(String[] args) { ExchangeArray change = new ExchangeArra...原创 2019-09-21 19:12:30 · 1172 阅读 · 0 评论 -
洗牌
洗牌(三种洗法)从中间分开,一张一张地洗随机从中间的附近分开,一张一张的洗随机从中间的附近分开,随机几张牌地洗/* _ooOoo_ o8888888o 88" . "88 (| -_- |) ...原创 2019-09-21 19:14:17 · 138 阅读 · 0 评论 -
跑马灯(未完成)
/* * 3.跑马灯(归位时结束) 一维: 数组总长自己定,步长随机,例如步长是2时就1和3交换,2和4交换 二维(算法时间复杂度是0(n^2)): 选用3*3或4*4或5*5的矩阵从外层开始顺逆轮流地旋转,旋转的步长是随机数,是外圈转一次,再到内圈也转一次,直到所有数都经过旋转后归位. 三维: 旋转三层的魔方 以魔方中心为原点建立空间直角坐标系,每一个小格子存放一个数据,一共 2...原创 2019-09-21 19:15:13 · 333 阅读 · 0 评论 -
试求和为N,积为最大的两个整数数分别是多少。
试求和为N,积为最大的两个整数数分别是多少。从键盘中输入一个整数,它是另外两个整数的加法运算和,这样的两个整数的组合有很多种,请找出乘积最大的一组数据。请注意输出两个整数以空格分割,按由小到大的顺序输出。输入格式:从键盘中输入一个整数输出格式:在一行中输出两个整数,以空格分割,按由小到大的顺序输出。输入样例:33输出样例:16 17输入样例:-51输出样例:-26 -2...原创 2019-08-05 13:33:33 · 1693 阅读 · 1 评论