数据结构
云聪
喜欢简洁的抽象,也着迷神奇的细节,我担心自己因为过于偏向抽象而变得肤浅,也害怕自己因为太过深入细节而迷失,这让我很痛苦,但是我不会放弃挣扎,因为我相信挣扎的过程就是成长。
展开
-
堆这种数据结构 Java实现
关于我所遇见的各种堆的含义,可以在下面这两篇博文中看到: Java虚拟机 堆和栈 深入理解计算机系统 1.7 操作系统管理硬件 本文讲的是堆数据结构的实现,并给出Java代码。 堆是一颗完全二叉树,在这棵树中,所有父节点都满足大于等于其子节点的堆叫大根堆,所有父节点都满足小于等于其子节点的堆叫小根堆。堆虽然是一颗树,但是通常存放在一个数组中,父节点和孩子节点的父子关系通过数组下标来确定。原创 2016-03-18 23:40:37 · 12281 阅读 · 1 评论 -
栈在Java类库中的顺序表示及实现——Stack
栈是一种后进先出的数据结构。在它之上,主要有三种操作:(1)判断栈是否为空——empty();(2)在栈顶添加一个元素——push(E);(3)删除并返回栈顶元素——pop()。在Java类库中,Stack类实现了栈,它继承自Vector类:public class Stack extends Vector于是,Stack用数组保存元素:protected Object[]原创 2015-05-20 10:25:21 · 1885 阅读 · 0 评论 -
队列在Java类库中的链式表示及实现——LinkedList
队列是一种先进先出的数据结构。它主要包含两种操作:(1)入队, 向队尾添加一个元素;(2)出队,从队首删除一个元素。原创 2015-05-20 11:18:15 · 1048 阅读 · 0 评论 -
线性表在Java类库中链式表示及的实现——LinkedList
队列在Java类库中的实现——LinkedList一文中已经提到LinkedList是一个双向链表,它用一个整数来存储链表的长度:transient int size = 0;用一个静态内部类来表示链表的节点: private static class Node { E item; Node next; Node prev;原创 2015-05-22 20:59:58 · 1103 阅读 · 0 评论 -
线性表在Java类库中的顺序表示及实现——ArrayList
ArrayList用数组实现了线性表。它用数组存储线性表的元素:transient Object[] elementData;它也存储了线性表中元素的个数:private int size;接下来讲讲线性表的常见操作在ArrayList中的实现。(1)查询线性表中是否包含某一个元素 public boolean contains(Object o) {原创 2015-05-23 20:15:30 · 1186 阅读 · 1 评论 -
哈希表在Java类库中的实现——HashMap
HashMap存储的是键值对,在HashMap内部用一个Entry表示键值对:static class Entry implements Map.Entry { final K key; V value; // 该键值对的下一个键值对的指针 Entry next; int hash; /**原创 2015-05-26 22:56:53 · 1488 阅读 · 1 评论 -
哈希表在Java类库中的实现——HashSet
HashSet是基于哈希表在Java类库中的实现——HashMap来实现的,与HashMap不同的是,它保存的是单个元素,而不是键值对。在HashSet里,用HashMap来存储元素:private transient HashMap map;从这个map的类型看出,它把HashSet的元素存储为HashMap的键。因为键值对的value位置空着,所以用一个值来占据键值对的value的位置原创 2015-05-28 11:34:18 · 957 阅读 · 0 评论 -
用堆实现优先级队列 Java实现
优先级队列分为最大优先级队列和最小优先级队列。本文介绍基于大根堆实现最大优先级队列。关于堆的介绍见另一篇博文: 堆这种数据结构 Java实现 最小优先级队列的实现可以在本文最后给出的github地址里找到。原创 2016-03-19 00:14:47 · 2685 阅读 · 1 评论 -
LeetCode208 Implement Trie (Prefix Tree) Java
题目: Implement a trie with insert, search, and startsWith methods.Note: You may assume that all inputs are consist of lowercase letters a-z. 分析: 对于一棵存储字单词的前缀树,是这样的:树的根结点是空的,其它非叶子节点中存储着一个字符,叶子节点是一个哨兵...原创 2016-04-22 21:59:48 · 917 阅读 · 0 评论