java数据结构和算法学习笔记】的更多相关文章

第一章 什么是数据结构和算法 数据结构的概述 数据结构是指 数据再计算机内存空间或磁盘空间中的组织形式 1.数据结构的特性 数据结构 优点 缺点 数组 插入快,如果知道下标可以快速存取 查找和删除慢  大小固定 有序数组 比无序数组查找快 插入和删除慢 大小固定 栈 后进先出 存取其他项很慢 队列 先进先出 存取其他项很慢 链表 插入和删除快 查找慢 二叉树 查找,插入,删除都快(如果保持平衡) 删除算法复杂 红黑树 查找,插入,删除都快 树总是是平衡的 算法复杂 2-3-4树 查找,插入,删除…
import java.io.BufferedReader; import java.io.InputStreamReader; //用栈来实现一个字符串逆序算法 /** * 数据结构:栈 */ class StackW{ private int maxSize; private char[] stackArray; private int top; public StackW(int max){ maxSize = max; stackArray = new char[maxSize]; to…
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; /** * 利用栈来实现分隔符匹配: 分隔符包括{},[], (),每个左分隔符要和右分隔符匹配,也就是说每个'{'后面要有'}'来匹配,以此类推. * 同时,在字符串中后出现的左分隔符应该比早出现的左分隔符要先完成匹配. 例如:c[d] //correct a{b[cd]e} //correct * a[b{c…
class ArrayBub { private long[] arr; private int nElement; public ArrayBub(int size) { arr = new long[size]; nElement = 0; } @Override public String toString() { if (nElement == 0) return "[]"; StringBuilder sb = new StringBuilder(); sb.append(&…
/** * 数据结构的特性 ********************************************************************************************** ********************************************************************************************** 数据结构 优点 缺点 ***********************************…
//用链表实现堆栈 /** * 节点类 */ class LinkS { private long data; public LinkS next; public LinkS(long d) { this.data = d; } public String toString() { return String.valueOf(data); } } /** * 链表类 */ class LinkSList { private LinkS first; public LinkSList() { fi…
/** * 双端链表的实现 */ class LinkA { public long dData; public LinkA next; public LinkA(long d) { dData = d; } public String toString() { return "[" + dData + "]"; } public void displayLink() { System.out.println(toString()); } } class First…
/** * Link节点 有数据项和next指向下一个Link引用 */ class Link { private int iData;// 数据 private double dData;// 数据 public Link next;// 下一个link节点的引用 public int getiData() { return iData; } public Link(int i, double d) { iData = i; dData = d; } public String toStrin…
/** * Link节点 * 有数据项和next指向下一个Link引用 */ class Link { private int iData;//数据 private double dData;//数据 public Link next;//下一个link节点的引用 public Link(int i, double d) { iData = i; dData = d; } public String toString() { return "[" + iData + ",&q…
/** * 中缀表达式转换成后缀表达式: 从输入(中缀表达式)中读取的字符,规则: 操作数: 写至输出 左括号: 推其入栈 右括号: 栈非空时重复以下步骤--> * 若项不为(,则写至输出: 若项为(,则推出循环 operator(opThis): 若栈为空,推opThis: 否则,重复--> * 弹出一项,若项为(,推其入栈: 若项为operator,且 若opTop<opThis,推入opTop,或 若opTop>=opThis,输出opTop, * 若opTop<opT…