![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 91
mlee1018
进步,一点点
展开
-
利用栈结构计算表达式串算法
算法思想:将中缀表达式转化为后缀表达式顺序的扫描后缀表达式中的每一个字符,并作如下操作:如果该字符为操作数,则将其压入栈中;如果该字符为操作符,则连续从栈中弹出两个操作数Y和X,并作运算操作XY,并将计算结果压入栈中。当整个表达式串扫描完毕,栈顶存放的就是表达式的结果。其中步骤1的算法思想如下:从左至右扫描中缀表达式,如果遇到操作数时直接加入到后缀表达式串中;否则遇到操作符时,原创 2017-02-23 15:26:57 · 603 阅读 · 0 评论 -
哈夫曼(Huffman)树创建及其带权路径长度(WPL)、哈夫曼编码、哈夫曼解码
哈夫曼(Huffman)树创建及其带权路径长度(WPL)、哈夫曼编码、哈夫曼解码package ccnu.offer.tree;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileInputStream;import java.io.FileNo原创 2017-04-21 18:25:00 · 2206 阅读 · 0 评论 -
打印所有出栈序列(指定进栈序列的顺序)
所有出栈序列package ccnu.allTest;import java.util.ArrayList;import java.util.Stack;public class PrintPopSerial { public static void main(String[] args) { ArrayList<String> pops = popSerials(new原创 2017-04-23 11:55:24 · 1607 阅读 · 0 评论 -
图的广度优先搜索(BFS)、深度优先搜索(DFS)(邻接矩阵法和邻接表法java实现)
图的广度优先搜索(BFS)、深度优先搜索(DFS)package ccnu.offer.graph;import java.util.ArrayList;import java.util.Arrays;import java.util.LinkedList;public class Demo01 { public static void test1(int vertexNum, cha原创 2017-04-24 12:07:24 · 1166 阅读 · 0 评论 -
汉诺塔
汉诺塔public static ArrayList<String> hanoi(int n, char x, char y, char z){ // 将n个盘子从x轴转向z轴 ArrayList<String> ways = new ArrayList<String>(); if(n == 1){ ways.add(move(x, z));原创 2017-04-04 20:56:36 · 555 阅读 · 0 评论 -
迪杰斯特拉(Dijkstra)算法求解单源最短路径及其相应长度(java实现)
Dijkstra算法(单源最短路径) package ccnu.offer.graph;import java.util.ArrayList;import java.util.Arrays;import java.util.Scanner;import java.util.Stack;public class Demo02 { public static void main(Strin原创 2017-04-24 20:31:44 · 1002 阅读 · 0 评论 -
拓扑排序(java)
拓扑排序 对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点(每一个顶点出现且只出现一次)排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则u在线性序列中出现在v之前(换言之,若顶点u在序列中排在顶点v的前面,则在图中不存在从顶点v到顶点u的路径)。算法描述:第一步:从DAG图中选择一个没原创 2017-04-26 16:32:37 · 608 阅读 · 0 评论 -
八大排序算法java实现
插入排序,交换排序,选择排序,归并排序原创 2017-02-21 17:28:50 · 629 阅读 · 0 评论 -
关键路径过程详解、算法及其实现
关键路径详解、算法及其实现AOE网:在一个表示工程的带权有向图中,用顶点表示事件,用有向边表示活动,边上的权值表示活动的持续时间,称这样的有向图叫做边表示活动的网,简称AOE网。AOE网中没有入边的顶点称为始点(或源点),没有出边的顶点称为终点(或汇点)。AOE网的性质:⑴ 只有在某顶点所代表的事件发生后,从该顶点出发的各活动才能开始;⑵ 只有在进入某顶点的各活动都结束,该顶点所代表的事件才能原创 2017-04-27 16:09:42 · 18093 阅读 · 0 评论 -
二叉树的创建、先序、中序、后序、层序的递归与非递归算法(java)
二叉树的创建、四种遍历算法递归与非递归package ccnu.offer.tree;import java.util.ArrayList;import java.util.LinkedList;import java.util.Scanner;import java.util.Stack;public class Demo02 { public static void main(St原创 2017-04-20 19:33:08 · 360 阅读 · 0 评论 -
线索二叉树的建立及其遍历访问操作
线索二叉树(中序),建立、访问package ccnu.offer.tree;public class Demo03 { static ThreadNode pre = null; public static void main(String[] args) { ThreadNode root = createBiTreeByPreIn(new int[]{1, 2,原创 2017-04-16 17:04:39 · 931 阅读 · 0 评论 -
平衡二叉树(AVL)各种操作详细分析
一步一步写平衡二叉树(AVL树) 平衡二叉树(Balanced Binary Tree)是二叉查找树的一个进化体,也是第一个引入平衡概念的二叉树。1962年,G.M. Adelson-Velsky 和 E.M. Landis发明了这棵树,所以它又叫AVL树。平衡二叉树要求对于每一个节点来说,它的左右子树的高度之差不能超过1,如果插入或者删除一个节点使得高度之差大于1,就要进行节点之间的旋转,将二叉转载 2017-04-18 21:16:03 · 1251 阅读 · 0 评论 -
八皇后
八皇后// row: 操作的当前行, columns:每一行存放的列信息(columns[i]=j表示第i行存放在第j列上) public static void eightQueen(int row, int[] columns){ if(row == 8){ System.out.print(++count + "th:"); ...原创 2017-04-04 21:08:04 · 299 阅读 · 0 评论 -
快速排序复杂度
快排我们来分析一下快速排序法的性能。快速排序的时间性能取决于快速排序递归的深度,可以用递归树来描述递归算法的执行情况。如图9‐9‐7所示,它是{50,10,90,30, 70,40,80,60,20}在快速排序过程中的递归过程。由于我们的第一个关键字是50,正好是待排序的序列的中间值,因此递归树是平衡的,此时性能也比较好。 图9-9-7在最优情况下,Partition每次都划分得很均匀,如果排序n转载 2017-04-08 12:21:11 · 1520 阅读 · 0 评论 -
时间复杂度分析及其案例
一、时间复杂度介绍1、时间复杂度定义在进行算法分析,语句总得执行次数 T(n) 是关于问题规模 n 的函数,进而分析 T(n) 随 n 的变化情况并确定 T(n) 数量级。算法的时间复杂度,也就是算法的时间量度,记作:T(n) = O(f(n)),它表示随问题规模 n 的增大算法执行时间的增长率和 f(n) 的增长率相同,称作算法的渐近时间复杂度,简称为时间复杂度,其中f(n) 是问题规模 n 的某转载 2017-04-08 12:33:11 · 2245 阅读 · 0 评论 -
全排列与组合算法及程序
全排列与组合组合 对于一个给定的字符串,我们有如下考虑得到所有的组合可能,即对于每一个字符,可以选择加入或者不加入,直到整个字符串中的所有字符经过这个过程则返回全排列 对于一个给定的字符串(其长度为n),我们有如下考虑得到所有可能的排列,将当前长度为n的串中的每一个字符均放在第一个位置,对这n种可能进行长度为n-1的字符串(从上一操作串的第二个位置开始)进行同样的操作,直到处理串的长度等于1即可输出原创 2017-04-09 22:17:38 · 1394 阅读 · 0 评论 -
算术表达式串的求值代码
表达式求值 ## click–>算法思想- 自定义顺序栈package ccnu.sqStack;public class SqStack { private static final int maxSize = 50; // 栈容量 private int top; // 栈顶指针 private char[] data; // 存放栈元素 publ原创 2017-02-23 12:23:11 · 807 阅读 · 0 评论 -
模式匹配
模式匹配public class Demo04 { public static void main(String[] args) { int pos = bf("ccnu ylpgogo... yes. .", "12ypl1"); System.out.println(pos); int pos1 = bf1("I am a b...原创 2017-04-05 19:11:03 · 361 阅读 · 0 评论 -
二叉排序树(二叉查找树)BST构造,节点插入,节点查找,节点删除(java)
二叉排序树(BST)的构造,节点插入,节点查找,节点删除(java) 高度最小BST(同样数据,顺序可能不一样)package ccnu.offer.tree;import java.util.ArrayList;import java.util.Arrays;// 二叉排序树(二叉查找树)BST// 对于给定数组(数据完全一样,并且数据顺序一定)构造二叉排序树一定,但是数据一样,顺序不一样原创 2017-04-18 18:32:39 · 3258 阅读 · 0 评论 -
平衡二叉树(AVL)的插入、删除、查找的java实现
平衡二叉树(AVL)操作实现java代码package ccnu.offer.tree;// 平衡二叉树(AVL树)的avl实现// AVL树只是实现平衡二叉树的一种方法,它还有很多的其他实现方法如红黑树、替罪羊树、Treap、伸展// 树等。接着来了解一下AVL树的特性:一棵AVL树是其每个结点的左子树和右子树的高度差的绝对值不超// 过1的二叉查找树(空树的高度为-1),这个差值也称为平原创 2017-04-20 14:57:01 · 1250 阅读 · 0 评论 -
单链表的基本操作
单链表的基本操作:大小,判空,插入节点,删除节点,查找结点,更改节点原创 2017-02-21 16:50:01 · 385 阅读 · 0 评论