摘要:
1 /*有序数组:主要是为了提高查找的效率 2 *查找:无序数组--顺序查找,有序数组--折半查找 3 *其中插入比无序数组慢 4 * */ 5 public class MyOrderedArray { 6 private long[] arr; 7 private int items; 8 9 public MyOrderedArra... 阅读全文
摘要:
1 /*线性表的数组实现 2 *特点:插入删除慢需要平均移动一半的数据,查找较快 3 *注意:有重复和无重复的数据对应的操作会有些不同 4 *注意数组一旦创建其大小就固定了 5 *Java集合长度可变是由于创建新的数组将原来旧的数据复制过去--这些附加功能牺牲了效率 6 *主要实现以下几个功能 7 *1.线性表查找 8 *2.线性表删除 9 *3.线性表的插入存... 阅读全文
摘要:
1 /*用链表实现的队列--使用的是双端链表 2 *注意:空指针错误肯定是引用没有指向对象 3 * */ 4 public class MyLinkedQueue { 5 private MyFirstAndLastLinkedList list; 6 private int items; 7 8 public MyLinkedQueue() { ... 阅读全文
摘要:
该链表事先已经定义好了,可以直接使用。 阅读全文
摘要:
1 /*双端链表--比普通链表多了一个指向最后一个节点的引用 2 * 特点: 链表可以进行尾巴插入--输出顺序和输入顺序一致 3 * 但是不可以进行尾巴删除因为没有倒数第二节点的引用 4 * */ 5 public class MyFirstAndLastLinkedList { 6 public Link first; 7 public Link ... 阅读全文
摘要:
1 /*栈和队列:逻辑结构属于操作受限的线性表 2 *栈:特点先进后出,只允许在栈顶操作 3 *栈的实现方式:顺序栈和链栈 4 *常见的操作:进栈,出栈,获取栈顶,判空,判满,栈的容量 5 *栈的应用 6 *1.逆序相关操作 7 *2.分隔符匹配 8 * */ 9 //顺序栈 10 public class MyStack { 11 private lon... 阅读全文
摘要:
1 /*优先队列--是对队列的一种改进 2 *要存储的数据存在优先级--数值小的优先级高--在队头 3 *优先队列的实现 4 *1.数组:适合数据量小的情况(没有用rear+front实现) 5 *优先队列头在items-1,队列尾在0是固定的 6 *2.堆:适合数据量大的情况 7 *优先队列的效率:插入O(N)移除O(1) 8 *优先队列的应用:操作系统线程调度算... 阅读全文
摘要:
1 /*队列:其实也是一种操作受限的线性表 2 *特点:先进先出 3 *队尾指针:负责元素的进队 4 *队头指针:负责元素的出队 5 *注意:普通队--容易浪费空间,一般队列使用最多的就是循环队列--指针环绕 6 *队列的实现方式:数组/链表 7 *队列判空判满: 8 *1.按照队列中元素的个数 9 *2.按照队头和队尾指针的关系 10 *存在双端队列:每端都... 阅读全文
摘要:
1 /*有序链表--使用的是单链表实现 2 *在插入的时候保持按照值顺序排列 3 *对于删除最小值的节点效率最高--适合频繁的删除最小的节点 4 * */ 5 public class MySortedLinkList { 6 public Link first; 7 8 public MySortedLinkList() { 9 ... 阅读全文
摘要:
1 /*双向链表特点: 2 *1.每个节点含有两个引用,previos和next,支持向前或向后的遍历(除头节点) 3 *2.缺点插入或删除的时候涉及到引用修改的比较多 4 *注意:下面的双向链表其实也实现了双端链表 5 *注意:在Java中多个引用可以指向同一个对象,也可以随时改变引用的指向 6 * 关于修改引用细心一点就可以 引用A = 引用B 表... 阅读全文