随笔分类 -  数据结构与算法

摘要:定义 二叉查找树:即BST,也叫二叉搜索树,二叉排序树,在二叉树的基础上,它拥有如下性质,每个节点的值都大于其左子树中的任意节点的值,而小于右子树的任意节点 图例 数据结构 节点数据结构如下 private class Node { private Value value; //该节点的值 priv 阅读全文
posted @ 2020-06-04 20:48 dwwzone 阅读(213) 评论(0) 推荐(0)
摘要:public class GeneralizedQueue< Item> 支持如下API isEmpty() insert(Item item) 添加一个元素 delete(int k) 删除并返回最早插入的第k个元素 方法一 链表实现 public class GeneralizedQueue < 阅读全文
posted @ 2019-10-17 20:21 dwwzone 阅读(207) 评论(0) 推荐(0)
摘要:在这个问题中,N个人决定通过以下方式减少生存的人数,直至只剩下最后一人。 他们围坐成一圈(位置记为0到N-1)并从第一个人开始从1报数,报到M的人会被杀死,然后从下一个存活的人又从1开始报数,直到最后一个人留下来。传说中Josephus找到了不会被杀死的位置。编写一个程序,从命令行接收N和M并打印出 阅读全文
posted @ 2019-10-17 19:16 dwwzone 阅读(293) 评论(0) 推荐(0)
摘要:public class RandomQueue< Item > 随机队列能够存储一组元素并支持如下API RandomQueue() 创建一个空队列 isEmpty()判断队列是否为空 enqueue(Item item) 添加一个元素 dequeue()删除并返回一个随机元素 sample() 阅读全文
posted @ 2019-10-16 19:55 dwwzone 阅读(598) 评论(0) 推荐(0)
摘要:背包可以存储一组数据,随机背包要求每次迭代,所有N!种排列出现的概率相等。 方法: 用数组保存一组元素,并在迭代器中的构造函数中随机打乱他们的顺序: 此时的打乱并非将原数组中的元素重新排列,而是使用一个新数组存储打乱的下标,并用新数组元素的顺序去遍历原数组 支持如下API 1.RandomBag() 阅读全文
posted @ 2019-10-15 20:59 dwwzone 阅读(168) 评论(0) 推荐(0)
摘要:支持以下API isEmpty() 判断队列是否为空 size() 节点数量 pushLeft() 左端插入节点 pushRight() 右端插入节点 popLeft() 左端删除节点 popRight() 右端删除节点 代码 import java.util.Iterator; /** * @au 阅读全文
posted @ 2019-10-14 21:00 dwwzone 阅读(274) 评论(0) 推荐(0)
摘要:是一种支持push,pop,enqueue操作的数据类型。push和pop都是对队列同一端的操作,enqueue和push对应,但是操作的是队列的另一端 和栈的思想基本一致,但是多维护一个指向栈底(也就是链表尾部)的指针,方便进行enqueue操作 /** * @author 鯉伴MAY * @pa 阅读全文
posted @ 2019-10-14 20:21 dwwzone 阅读(191) 评论(0) 推荐(0)
摘要:每一个节点都含有指向前驱节点的引用pre 每一个节点都含有指向后继节点的引用next 实现以下功能: 1.在表头插入节点 2.在表尾插入节点 3.从表头删除节点 4.从表尾删除节点 5.从指定节点之前插入新节点 6.从指定节点之后插入新节点 7.删除指定节点 8.输出链表 代码 /** * @aut 阅读全文
posted @ 2019-10-10 09:30 dwwzone 阅读(289) 评论(0) 推荐(0)
摘要:迭代方法 记录链表中的三个连续节点:reverse ,first,second。在每轮迭代中,从原链表中提取first并将它插入逆链表的开头。一直保持first指向原链表剩余节点的首节点,second指向原链表剩余节点的第二个节点,reverse指向逆链表的首节点 public Node rever 阅读全文
posted @ 2019-10-09 20:35 dwwzone 阅读(310) 评论(0) 推荐(0)
摘要:问题描述 输入例如 1 + 2 ) * 3 - 4 ) * 5 - 6 ) ) ),程序应该输出 ( ( 1 + 2 ) * ( ( 3 - 4 ) * ( 5 - 6 ) ) ) 思路 此题思路跟计算式中序变后序相似,采用双栈的做法,数字一个栈(String栈),运算符一个栈(Character栈 阅读全文
posted @ 2019-09-04 09:24 dwwzone 阅读(154) 评论(0) 推荐(1)