
数据结构
Dream答案
这个作者很懒,什么都没留下…
展开
-
双向队列
双向队列原创 2018-08-04 16:43:52 · 214 阅读 · 1 评论 -
直接插入排序
直接插入排序原创 2018-10-11 20:31:37 · 165 阅读 · 0 评论 -
折半插入排序
折半插入排序原创 2018-10-11 20:32:30 · 244 阅读 · 0 评论 -
希尔排序
希尔排序原创 2018-10-11 21:00:31 · 143 阅读 · 0 评论 -
平衡二叉树
平衡二叉树原创 2018-10-04 10:45:04 · 194 阅读 · 1 评论 -
无向图的邻接矩阵
package com.answer.tu;public class MatrixDG {//无向图的邻接矩阵 private char[] mVexs;//顶点集合 private int[][] mMatrix;//矩阵 public MatrixDG(char[] vexs, char[][] edges){//顶点数组,边数组 int vlen...原创 2018-09-17 10:01:26 · 5573 阅读 · 0 评论 -
排序二叉树(Java)
性质: 若左子树不为空,则左子树上的所有节点的值都小于其根节点的值; 若右子树不为空,则右子树上的所有节点的值都大于其根节点的值; 左右子树均为排序二叉树 package com.answer.binaryTree;import java.util.ArrayDeque;import java.util.ArrayList;import java.util....原创 2019-04-09 14:35:42 · 307 阅读 · 0 评论 -
哈夫曼树(Java)
带权路径最小的树被称为哈夫曼树或者最优二叉树;n个叶子节点的哈夫曼树总共有2*n-1个节点;package com.answer.binaryTree;import java.util.ArrayDeque;import java.util.ArrayList;import java.util.List;import java.util.Queue;public class...原创 2019-04-08 09:40:13 · 262 阅读 · 0 评论 -
无向图的邻接表结构
package com.answer.tu;public class ListUDG { private class VNode{//表的顶点 private String data;// private ENode firstEdge;//指向其第一个邻接点 } private class ENode{//表的邻接点 ...原创 2018-09-21 11:49:39 · 1794 阅读 · 0 评论 -
图的深度优先遍历和广度优先遍历(Java)
建立图的邻接矩阵:package com.answer.tu;public class DFSBFS { private char[] mVexs;//顶点集合 private int[][] mMatrix;//邻接矩阵 public DFSBFS(char[] vexs, char[][] edges){ int vlen=vexs.len...原创 2019-04-20 11:11:40 · 1148 阅读 · 1 评论 -
选择排序——直接选择排序
直接选择排序的第n趟比较至多交换一次,永远总是拿n-1位的数据和本趟比较中最小的一位进行交换; 时间复杂度O(n^2); 空间复杂度O(1); 不稳定;package com.answer.sort;public class SelectSort { public static void main(String[] args) { int[] num={21,...原创 2018-10-07 15:38:52 · 198 阅读 · 0 评论 -
选择排序-堆排序
package Myjava;/** 时间效率为O(n*logn),空间效率为O(1)* 堆排序是不稳定的* */public class HeapSort { public void sort(int[] data){ for(int i=0;i<data.length-1;i++){ bulidMaxHeap(data,data...原创 2018-10-07 15:05:45 · 165 阅读 · 0 评论 -
快排
第一种方法:public void quickSort(int[] data,int start,int end){ int i=start; int j=end; if(i>=j){ return; } boolean flag=true;//游标从右侧开始走; w...原创 2018-09-26 10:30:50 · 410 阅读 · 0 评论 -
KMP(Java)
理论参考-》package com.answer.kmp;public class Test1 { public int ViolentMatch(String str1,String str2){ char[] c1=str1.toCharArray(); char[] c2=str2.toCharArray(); int l1=...原创 2019-06-02 18:03:32 · 460 阅读 · 0 评论 -
非递归遍历二叉树
先序遍历:/* * A * / \ * B C * / \ / \ * D E F G *...原创 2019-04-07 09:44:36 · 175 阅读 · 0 评论 -
二叉树的先序、中序、后序遍历
先序、中序、后序遍历这三种遍历都是根据根节点而言的;public ArrayList<Node> preIterator(Node node){//先序遍历 ArrayList<Node> list=new ArrayList<>(); list.add(node); if(node.left!=null){...原创 2019-04-06 16:31:42 · 185 阅读 · 0 评论 -
队列的链式存储结构
由于链队列采用链式结构来保存队列中的所有元素,该队列允许添加无限多个数据元素,因此链队列无队列满的问题。package MyJava2;public class LinkQueue { class Node{ private String data; private Node next; public Node(){} ...原创 2018-10-28 23:24:06 · 224 阅读 · 0 评论 -
栈的链式存储结构
package MyJava2;public class LinkStack { private class Node{ String data; Node next; public Node(){} public Node(String data,Node next){ this.data=da...原创 2018-10-24 21:57:59 · 229 阅读 · 0 评论 -
循环链表
package Myjava;public class CircularLinkedList { private class Node{ String data; Node next; public Node(){} public Node(String data,Node next){ this...原创 2018-10-19 10:38:22 · 154 阅读 · 0 评论 -
顺序结构线性表
四种基本的数据逻辑结构:1.集合:数据元素之间只有“同属于一个集合”的关系;2.线性结构:数据元素之间存在一个对一个的关系;3.树形结构:数据元素之间存在一个对多个的关系;4.图状结构:数据元素之间存在多个对多个的关系;两种物理存储结构:·顺序存储结构·链式存储结构线性表的基本操作:初始化:通常时一个构造器,用于创建一个空的线性表;返回线性表的...原创 2018-09-07 15:42:56 · 267 阅读 · 0 评论 -
树——父节点表示
package com.answer.binaryTree;import java.util.ArrayList;import java.util.List;public class Tree { private static class Node{ private int parent; private String data; ...原创 2018-08-30 20:27:46 · 496 阅读 · 0 评论 -
双向链表
双向链表的操作:查找;增加;删除;package MyJava2;public class DuLinkedList { private class Node{ String data; Node prve; Node next; public Node(){} public Node(...原创 2018-08-27 16:50:03 · 212 阅读 · 0 评论 -
队列的顺序存储结构
队列是一种特殊的线性表,只允许在表的前端进行删除操作,只允许在表的后端进行插入操作。队列的常用操作:初始化:返回队列的长度:加入元素:移除元素:访问队列的前端元素:判断队列是否为空:清空队列:package MyJava2;import java.util.Arrays;public class SequenceQueue { private ...原创 2018-08-04 16:46:29 · 198 阅读 · 0 评论 -
循环队列
循环队列:为了将顺序队列底层数组中已删除元素所占用的空间重新利用,消除可能出现的“假满”现象。package MyJava2;import java.util.Arrays;public class LoopQueue { private int DEFAULT_SIZE=10; private int capacity; private String[] e...原创 2018-08-04 16:46:18 · 234 阅读 · 0 评论 -
栈的顺序存储结构
栈是一种特殊的线性表,这种线性表只能在固定一端进行插入、删除操作。栈的常用操作:初始化:通常是一个构造器,创建一个空栈;返回栈的长度:返回栈中的元素个数;入栈:向栈的栈顶插入一个元素,栈的长度+1;出栈:从栈的栈顶删除一个元素,栈的长度-1,返回被删除的元素;访问栈顶的元素:判断栈是否为空:清空栈:package MyJava2;import java.u...原创 2018-07-26 11:36:19 · 298 阅读 · 0 评论 -
单链表
·链表在插入、删除数据元素时比顺序线性表快的多,但是查找一个节点或者访问特定编号的节点比顺序线性表慢的多;单链表常用的操作有:·查找;·插入;·删除;package MyJava2;public class SingleLinkedList { private class Node{//定义一个内部类Node String data; ...原创 2018-08-04 16:43:26 · 199 阅读 · 0 评论 -
顺序存储——二叉树(Java)
二叉树的性质:二叉树第i层的节点数目至多为2^(i-1),i>=1; 深度为k的二叉树至多有2^k-1个节点; 具有n个节点的完全二叉树的深度为 顺序存储充分利用满二叉树的特性 顺序存储结构会有一定的空间浪费package com.answer.binaryTree;public class ArrayBinTree { private int DEFAULT_S...原创 2018-09-06 10:09:27 · 322 阅读 · 0 评论 -
链表存储——二叉树(Java)
package com.answer.binaryTree;public class TwoLinkBinTree { private static class Node{ private String data; private Node left; private Node right; public Node(){...原创 2018-09-06 11:04:22 · 261 阅读 · 0 评论 -
三叉链表存储——二叉树(Java)
每个节点记住其左右子节点以及父节点;package com.answer.binaryTree;public class ThreeLinkBinTree { private static class Node{ private String data; private Node left; private Node right;...原创 2019-04-06 11:48:41 · 1063 阅读 · 0 评论 -
深度优先遍历和广度优先遍历(Java)
深度优先遍历:将先访问到树中最深层次的节点;public ArrayList<Node> depth(){//深度优先遍历 if(root==null){ throw new RuntimeException("空树!"); } ArrayList<Node> list=new ArrayLi...原创 2019-04-06 16:07:26 · 247 阅读 · 0 评论 -
树——子节点链表示
父节点表示法是让每个节点记住它的父节点的索引,子节点链是让父节点记住它的所有子节点。package com.answer.binaryTree; import java.util.ArrayList; import java.util.List;public class TreeChild { private static class So...原创 2019-04-05 10:16:26 · 304 阅读 · 0 评论