
数据结构
VicterTian
这个作者很懒,什么都没留下…
展开
-
Java实现链表相关操作
链表作为最基本的数据结构,在程序设计中有着非常重要的作用,起存储特点如下,可以用任意一组存储单元来存储单链表中的数据元素,并且存储单元可以不连续,而且,除了存储每个元素的值以外,还可以存储指示其直接后继元素的信息。这两组信息组成的数据元素称为结点。N个结点链在一块称为链表,当结点只包含其后继结点的信息的链表就被称为单链表,存储方式如图所示:import java.util.Hashtable;...原创 2019-01-20 22:11:15 · 263 阅读 · 0 评论 -
根据二叉树前序、中序遍历求出后续遍历
/** * TreeNode * * @author VicterTian * @version V1.0 * @Date 2019/2/8 */class TreeNode { int data; TreeNode left; TreeNode right; public TreeNode() { } TreeNode(int data) { this.data...原创 2019-02-08 21:33:39 · 713 阅读 · 0 评论 -
剑指offer第二版-7_3用单队列实现栈
/** * 利用一个队列实现栈 * <p> * 插入操作与之前一样,对于弹出操作,假设队列长度为n(假设存储内容为头2,5,1,3,4尾), * 对从队头poll出来的元素执行offer存入队尾,依次进行n-1次poll与offer(此时存储的内容为头4,2,5,1,3尾), * 然后再执行一次poll(此时为2,5,1,3),即完成了自实现栈的弹出。 * 这样将在时间不变...原创 2019-01-23 12:31:22 · 194 阅读 · 1 评论 -
剑指offer第二版-7_2用双队列实现栈
/** * 用两个队列实现栈 * <p> * (1)对于插入操作,栈与队列都是从队尾进行,因此很容易完成。但是一定要保证有一个队列是空的 *(2)对于弹出操作,队列从队头开始,而栈从队尾开始,要想取到队尾元素,需要第二个队列的协助: * 假设queue1不为空,queue2为空,将queue1的原书依次取出放到queue2中,同时判断,当queue1的长度为1时,不要将该元素...原创 2019-01-23 12:30:10 · 212 阅读 · 0 评论 -
剑指offer第二版-7_1用两个栈实现队列
/** * 用两个栈实现队列 * <p> * (1)对于插入操作,栈与队列都是从队尾进行,因此一行代码就可以完成push() * (2)对于弹出操作,队列先进先出从队头开始,而栈后进先出从队尾开始, * 要想取到队头元素,就得需要第二个栈stack2的协助:弹出时将stack1的元素依次取出放到stack2中 * 此时stack2进行弹出的顺序就是整个队列的弹出顺序。而如果...原创 2019-01-23 12:28:07 · 171 阅读 · 0 评论 -
排序算法
本文将利用代码尽可能详细的解释各种排序算法(桶排和各种排序算法的比较还没有总结完,后面会继续更新)文章目录冒泡排序插入排序选择排序归并排序快速排序希尔排序冒泡排序/** * 冒泡排序 * <p> * 冒泡排序顾名思义就是整个过程像气泡一样上升,单向冒泡排序的基本思想是: * 对于给定n个记录,从第一个记录开始依次对相邻的两个记录进行比较,当前面的记录大于后面的记录时,交...原创 2019-01-22 22:06:01 · 145 阅读 · 0 评论 -
利用两个栈模拟队列操作
要求:利用两个栈模拟队列操作说明:假设使用栈A和栈B模拟队列Q,A为押栈,B为弹栈,以实现队列Q假设AB都为空,可以认为A提供入队列功能,B提供出队列功能要入队列,入栈A即可,要出队列,则需要两种情况:若B不为空,直接弹出B的数据若B为空,则依次弹出栈A的数据,放入B中,再弹出B的数据代码:public class MyQueueOperation&lt;E&gt; { priv...原创 2019-01-21 16:59:28 · 615 阅读 · 0 评论 -
Java实现队列
队列(queue)是一种只允许在一端进行插入操作,而在另一端进行删除操作的线性表。队列是一种先进先出(First In First Out)的线性表,简称FIFO。允许插入的一端称为队尾,允许删除的一端称为队头class NodeForQueue&amp;lt;E&amp;gt;{ NodeForQueue&amp;lt;E&amp;gt; next = null; E data; public NodeForQ...原创 2019-01-21 16:51:40 · 212 阅读 · 0 评论 -
利用java链表实现栈
栈作为被广泛使用的数据结构,是在一个特定范围的存储单元中存储的数据,这些数据可以重新被取出使用,与线性表相比,它们的插入和删除受到更多的约束和限定,所以又称为限定性的线性表结构。不同的是,栈是一个FIFO结构,下面是采用java链表的方式时实现栈/** * 定义一个链表的节点 * * @author VicterTian * @version V1.0 * @Date 2019/1/...原创 2019-01-21 15:37:09 · 654 阅读 · 0 评论 -
利用java数组实现栈
栈作为被广泛使用的数据结构,是在一个特定范围的存储单元中存储的数据,这些数据可以重新被取出使用,与线性表相比,它们的插入和删除受到更多的约束和限定,所以又称为限定性的线性表结构。不同的是,栈是一个FIFO结构,下面是采用java数组的方式时实现栈/** * 利用java数组实现栈 * * @author VicterTian * @version V1.0 * @Date 2019/...原创 2019-01-21 14:57:36 · 438 阅读 · 0 评论 -
哈夫曼树的构造
Huffman树是一种特殊结构的二叉树,由Huffman树设计的二进制前缀编码,也称为Huffman编码在通信领域有着广泛的应用。在word2vec模型中,在构建层次Softmax的过程中,也使用到了Huffman树的知识。哈夫曼树并不唯一,但带权路径长度一定是相同的。下面是构建哈夫曼树的过程:比如:8个结点的权值大小如下:1、 从19,21,2,3,6,7,10,32中选择两个权小结点...原创 2019-04-07 09:54:31 · 3458 阅读 · 1 评论