![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
JoeCSG
这个作者很懒,什么都没留下…
展开
-
手写链表(一)
class MyList { private int data; private MyList next; public MyList(int a) { data = a; } public void append(MyList x) { MyList p = this; while (p.next != null) { p = p.next; } p.n原创 2014-02-01 21:00:50 · 2123 阅读 · 0 评论 -
试探与回溯-差三角问题
/**仔细观察下面的数字组成的三角形: 3 1 45 6 2看出什么特征吗?首先,它包含了1~6的连续整数。重要的是:每个数字都是其下方相邻的两个数字的差(当然是大数减去小数)满足这样特征的三角形,称为:差三角。你的任务是找出1~15的整数组成的一个更大的差三角。其形如: ? 4 ? ? ? ? ? ?原创 2014-03-02 17:14:14 · 1109 阅读 · 2 评论 -
迷宫问题-深度遍历解法
迷宫问题,深度遍历解法import java.util.HashSet;import java.util.Set;public class Puzzl { private char[][] data; private Pos entry; private Pos exit; private Set solve = new HashSet(); // 找到的解 clas原创 2014-03-02 17:36:34 · 1609 阅读 · 0 评论 -
试探与回溯-八皇后问题
// 8皇后问题public class EightGirl { // 逐一输出每个解 static void show(int[] a) { for (int i = 0; i < a.length; i++) { System.out.print(a[i] + " "); } System.out.println(); } // 对数组放置第k个皇后 sta原创 2014-03-02 16:52:15 · 840 阅读 · 0 评论 -
迷宫问题_按要求操作
小明正在玩一个“翻硬币”的游戏。桌上放着排成一排的若干硬币。我们用 * 表示正面,用 o 表示反面(是小写字母,不是零)。比如,可能情形是:**oo***oooo如果同时翻转左边的两个硬币,则变为:oooo***oooo现在小明的问题是:如果已知了初始状态和要达到的目标状态,每次只能同时翻转相邻的两个硬币,那么对特定的局面,最少要翻动多少次呢?我们约定:把翻动相原创 2014-03-02 20:47:59 · 849 阅读 · 0 评论 -
分酒问题
import java.util.HashSet;import java.util.Set;class OilStatus { static int[] full = { 12, 8, 5 }; int[] v = new int[3]; OilStatus from; // 从哪个状态来 public OilStatus(int a, int b, int c) { v[0原创 2014-03-02 21:34:38 · 1096 阅读 · 0 评论 -
分酒问题_求最大不能组合出的数字
import java.util.Scanner;/*小明开了一家糖果店。他别出心裁:把水果糖包成4颗一包和7颗一包的两种。糖果不能拆包卖。小朋友来买糖的时候,他就用这两种包装来组合。当然有些糖果数目是无法组合出来的,比如要买 10 颗糖。你可以用计算机测试一下,在这种包装情况下,最大不能买到的数量是17。大于17的任何数字都可以用4和7组合出来。本题的要求就是在已知两个包装的数原创 2014-03-02 21:42:42 · 1707 阅读 · 0 评论 -
博弈树取球博弈问题
package a;/*博弈树取球博弈问题*/public class MyA { // 判定程序,当前剩余球数目=x static boolean f(int x) { int[] op = { 1, 3, 7, 8 }; //逐一判断这4种操作,如果可行就用这种操作 for (int i = 0; i < op.length; i++) { if (x >= op原创 2014-03-10 20:15:39 · 1055 阅读 · 0 评论 -
用概率模拟法求圆周率pi
用概率模拟法求圆周率pipackage a;/*概率模拟发求圆周率*/public class MyA { public static void main(String[] args) { final int N = 1000 * 1000;//N等于一百万次的实验 int n = 0;//探测落到园内的点的个数 for (int i = 0; i < N; i++) {原创 2014-03-10 19:44:46 · 2915 阅读 · 0 评论 -
井字棋代码
井字棋代码package a;import java.util.ArrayList;import java.util.HashSet;import java.util.List;import java.util.Scanner;import java.util.Set;public class TT2{ private Scanner scan; Set set_a原创 2014-03-10 21:33:58 · 4205 阅读 · 1 评论 -
双栈结构_表达式求值
import java.util.HashMap;import java.util.Map;import java.util.Stack;public class MyA { //定义计算的方法 static void calcu(Stack data, Stack op) { int b = (Integer) data.pop(); int a = (Integer)原创 2014-03-08 19:16:07 · 1298 阅读 · 0 评论 -
广度优先遍历-示例
import java.util.ArrayList;import java.util.HashSet;import java.util.List;import java.util.Set;public class Test { public static void main(String[] args) { // 图的邻接表定义 int[][] g = { { 0, 1, 1原创 2014-03-01 15:14:47 · 926 阅读 · 0 评论 -
广度优先遍历_改造为递归方式
import java.util.ArrayList;import java.util.HashSet;import java.util.List;import java.util.Set;/**第05讲-广度优先遍历_改造为递归方式 * ------------------------------------ * 深度优先遍历的递归相似性很明显。 * 广度优先遍历可以用递归的解法原创 2014-03-01 16:05:30 · 5804 阅读 · 0 评论 -
最短路径-迪杰斯特拉解法-Dijkstra法
/**迪杰斯特拉解法求最短路径*/原创 2014-03-01 17:34:03 · 1267 阅读 · 0 评论 -
手写链表(二)-使用内部类实现添加、查询、定位、插入等功能
使用内部类实现添加、查询、定位、插入等功能public class MyList { class Node{ public Node next; public T data; public Node(T data, Node next){ this.data=data; this.next=next; } } private Node head; pri原创 2014-02-01 23:08:43 · 1473 阅读 · 2 评论 -
双向循环链表
定义双向循环链表,解决如下的问题:有 n 个孩子顺时针站成一圈,其编号为:1,2,3,... n从1号孩子开始顺时针数数,每个孩子数一个数,遇到7的倍数或数字中含有7,则该孩子不出声,只拍一下手,数数的方向逆转,下一个孩子数下一个数字。例如:1,2,3...6,拍手,则接下来,6号孩子数8,5号孩子数9 ....请模拟该过程,如果有20个孩子,求哪个原创 2014-02-08 22:28:18 · 684 阅读 · 0 评论 -
树型选择排序
http://zhouyunan2010.iteye.com/blog/1217462转载 2014-02-22 21:20:30 · 705 阅读 · 1 评论 -
一般树形结构_求通路长度
如果定义一颗二叉树的高度就是从根到叶子的最长距离。试编码求二叉树的高度。其实,二叉树的高度就是它的左子树和右子树中高度最大值 + 1另外考虑: 当待排序的数据本来就是有序的情况,会发生什么?请参考《数据结构》教材解决这个问题。import java.util.ArrayList;import java.util.List;class MyTree { private L原创 2014-02-15 00:41:47 · 1689 阅读 · 0 评论 -
数组与动态数组_验证步骤
角谷定理说: 任何一个正整数,如果是偶数,则除以2,如果是奇数则乘以3再加1,如此反复,必能最终得到1。这里不要求你证明这个定理,只需要验证10000以内的所有整数哪个经过了最长的步骤,最后才得到1, 并输出这个步骤。比如对9,输出:9 28 14 7 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1/* * 角谷定理说: 任何一个正整数,原创 2014-02-15 00:46:37 · 779 阅读 · 0 评论 -
队列与栈_栈结构的应用
栈结构很有用处,有时通过它可以轻松化解一些难题。看如下问题:...(.[...)...]...(..(.)..)..{..}.[.]...[[...(.).]..].请判断一个串中的括号是否匹配注意下列不匹配的情况:左括号太多右括号太多右括号先于左括号出现 ..)...(...挎臂情况 ....[...(....]....)....原创 2014-02-15 00:28:14 · 632 阅读 · 0 评论 -
二叉排序树_求二叉树的高度
如果定义一颗二叉树的高度就是从根到叶子的最长距离。试编码求二叉树的高度。其实,二叉树的高度就是它的左子树和右子树中高度最大值 + 1另外考虑: 当待排序的数据本来就是有序的情况,会发生什么?请参考《数据结构》教材解决这个问题。class BiTree { private int data; private BiTree left; private Bi原创 2014-02-15 00:30:43 · 4273 阅读 · 0 评论 -
通用菜单_完善功能
为通用控制台菜单完善功能:1. 增加“退出”功能,可以在任意位置放弃选择2. 增加“返回到主菜单”功能,可以在任意深度回到主菜单,而不是逐级向上。3. 为每个叶子节点(就是最终执行命令)增加一个整数信息,将来选择结束时返回这个整数信息,而不是返回叶子节点的字符串。因为不同路径的字符串可能会是相同的内容。import java.util.*;public clas原创 2014-02-15 00:39:12 · 806 阅读 · 0 评论 -
智能数组
java提供的数组有个特点: 当数组元素的个数确定后,就不能再追加元素了。也就是说,数组的大小在创建的时候就固定了。现在请你来写一个智能数组类 SmartArray,它能够根据需要动态地分配空间。实际上,它只不过是在其它位置分配新的数组,然后把旧的数据拷贝过去。请提供数组访问方法:int get(int idx); // 返回指定位置的元素值void set(int i原创 2014-02-15 00:44:13 · 790 阅读 · 0 评论 -
Set接口与应用_推算年龄
美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。他曾在1935~1936年应邀来中国清华大学讲学。一次,他参加某个重要会议,年轻的脸孔引人注目。于是有人询问他的年龄,他回答说:“我年龄的立方是个4位数。我年龄的4次方是个6位数。这10个数字正好包含了从0到9这10个数字,每个都恰好出现1次。”请你推算一下,他当时到底有多年轻。/** * 标题: 猜年龄 * 美原创 2014-02-16 13:16:47 · 940 阅读 · 0 评论 -
Java Collection
yuanhttp://my.oschina.net/xiaomaoandhong/blog/78394在 Java2中,有一套设计优良的接口和类组成了Java集合框架Collection,使程序员操作成批的数据或对象元素极为方便。这些接口和类有很多对抽象数据类型操作的API,而这是我们常用的且在数据结构中熟知的。例如Map,Set,List等。并且Java用面向对象的设计对这些数据结构和算转载 2014-04-16 22:23:25 · 572 阅读 · 0 评论