common-data-structure
Version:
一些javaScript常用数据结构
193 lines (160 loc) • 7.26 kB
Markdown
# common-data-structure
Help you more convenient to use some common JavaScript data structure
## Table of Contents
- [Installing](#installing)
- [Example](#example)
- [Require](#require)
- [API](#api)
+ [Queue](#queue)
+ [Deque](#deque)
+ [Stack](#stack)
+ [LinkedList](#linkedlist)
+ [DoublyLinkedList](#doublylinkedlist)
+ [Set](#set)
+ [HashMap](#hashmap)
+ [BinarySearchTree](#binarysearchtree)
+ [MinHead](#minhead)
+ [MaxHead](#maxhead)
## Installing
``` javascript
npm install --save common-data-structure
```
## Example
``` javascript
const { Stack } = require('common-data-structure')
const stack = new Stack() // create an instance
stack.push(5) // add an element
stack.push(6)
stack.peek() // peek top of stack element
stack.push(8)
stack.isEmpty() // Is the stack empty
stack.size() // stack length
```
## Require
``` javascript
// import your required classes
const {
Queue,
Deque,
Stack,
LinkedList,
DoublyLinkedList,
Set,
HashMap,
BinarySearchTree,
MinHead,
MaxHead
} = require('common-data-structure')
```
## API
#### Queue
| 方法名称 | 参数 | 描述 |
| --- | --- | --- |
| enqueue(element) | element: 元素 | 向队列尾部添加一个(或多个)新的项 |
| dequeue() | | 移除队列的第一项(即排在队列最前面的项)并返回被移除的元素 |
| peek() | | 返回队列中第一个元素——最先被添加,也将是最先被移除的元素 |
| isEmpty() | | 如果队列中不包含任何元素,返回 true,否则返回 false |
| size() | | 返回队列包含的元素个数,与数组的 length 属性类似 |
| clear() | | 清空队列中所有的元素 |
| toString() | | 返回字符串 |
#### Deque
| 方法名称 | 参数 | 描述 |
| --- | --- | --- |
| addFront(element) | element: 元素 | 在双端队列前添加新的元素 |
| addBack(element) | element: 元素 | 在双端队列后端添加新元素 |
| removeFront() | | 在双端队列前端移除第一个元素 |
| removeBack() | | 在双端队列后端移除第一个元素 |
| peekFront() | | 返回双端队列前端的一个元素 |
| peekBack() | | 返回双端队列后端的第一个元素 |
| isEmpty() | | 如果队列中不包含任何元素,返回 true,否则返回 false |
| size() | | 返回队列包含的元素个数,与数组的 length 属性类似 |
| clear() | | 清空队列中所有的元素 |
| toString() | | 返回字符串 |
#### Stack
| 方法名称 | 参数 | 描述 |
| --- | --- | --- |
| push(element) | element: 元素 | 向栈添加元素 |
| pop() | | 从栈移除元素 |
| peek() | | 查看栈顶元素 |
| isEmpty() | | 检查栈是否为空 |
| size() | | 移除栈里的所有元素 |
| toString() | | 返回对象的字符串表示形式 |
#### LinkedList
| 方法名称 | 参数 | 描述 |
| --- | --- | --- |
| push(element) | element: 元素 | 向链表尾部添加一个新元素 |
| insert(element) | element: 元素; index: 插入元素的位置 | 向链表的特定位置插入一个新元素 |
| getElementAt(index) | index: 元素的位置 | 在双端队列前端移除第一个元素 |
| removeBack(index) | index: 元素的位置 | 返回链表中特定位置的元素。如果链表中不存在这样的元素,则返回 undefined |
| remove(element) | element: 元素 | 从链表中移除一个元素 |
| indexOf(element) | element: 元素 | 返回元素在链表中的索引。如果链表中没有改元素则返回 -1 |
| removeAt(index) | index: 元素的位置 | 从链表的特定位置移除一个元素 |
| isEmpty() | | 判断链表是否为空 |
| getHead() | | 获取链表的头节点 |
| toString() | | 返回表示整个链表的字符串 |
#### DoublyLinkedList
| 方法名称 | 参数 | 描述 |
| --- | --- | --- |
| push(element) | element: 元素 | 向链表尾部添加一个新元素 |
| insert(element) | element: 元素; index: 插入元素的位置 | 向链表的特定位置插入一个新元素 |
| getElementAt(index) | index: 元素的位置 | 在双端队列前端移除第一个元素 |
| removeBack(index) | index: 元素的位置 | 返回链表中特定位置的元素。如果链表中不存在这样的元素,则返回 undefined |
| remove(element) | element: 元素 | 从链表中移除一个元素 |
| indexOf(element) | element: 元素 | 返回元素在链表中的索引。如果链表中没有改元素则返回 -1 |
| removeAt(index) | index: 元素的位置 | 从链表的特定位置移除一个元素 |
| isEmpty() | | 判断链表是否为空 |
| getHead() | | 获取链表的头节点 |
| toString() | | 返回表示整个链表的字符串 |
#### Set
| 方法名称 | 参数 | 描述 |
| --- | --- | --- |
| add(element) | element: 元素 | 向集合添加一个新元素 |
| delete(element) | element: 元素 | 从集合中移除一个元素 |
| has(element) | element: 元素 | 判断元素是否在集合中,存在则返回true,否则返回false |
| clear() | | 移除集合中的所有元素 |
| size() | | 返回集合所包含元素的数量 |
| values() | | 返回一个包含集合中所有元素的数组 |
#### HashMap
| 方法名称 | 参数 | 描述 |
| --- | --- | --- |
| set(key, value) | key: 键; value: 值 | 向散列表增加一个新的项 |
| delete(key) | key: 键 | 根据键值移除值 |
| get(key) | key: 键 | 根据键值返回特定的值 |
| hasKey() | key: 键 | 判断某键值是否存在散列表中 |
| clear() | | 删除字典中所有值 |
| size() | | 返回字典包含的数量 |
| isEmpty() | | 字典是否为空 |
| keys() | | 将字典所包含的所有键名以数组形式返回 |
| values() | | 将字典所包含的所有数值以数组形式返回 |
| keyValues() | | 将字典中所有[{键,值}]对返回 |
| forEach() | | 迭代字典中所有的键值对 |
| toString() | | 返回 hashmap 的字符串 |
#### BinarySearchTree
| 方法名称 | 参数 | 描述 |
| --- | --- | --- |
| insert(key) | key: 键 | 向树中插入一个新的键 |
| search(key) | key: 键 | 在树中查找一个键 |
| inOrderTraverse(callback) | callback: 回调函数 | 中序遍历所有节点 |
| preOrderTraverse(callback) | callback: 回调函数 | 先序遍历所有节点 |
| postOrderTraverse(callback) | callback: 回调函数 | 后序遍历所有节点 |
| min() | | 返回树中最小的值/键 |
| max() | | 返回树中最大的值/键 |
| remove(key) | key: 键 | 从树中移除某个键 |
#### MinHead
| 方法名称 | 参数 | 描述 |
| --- | --- | --- |
| insert(value) | value: 值 | 向堆中插入一个新的值 |
| extract() | | 移除最小值 |
| size() | | 堆的大小 |
| isEmpty() | | 是否为空 |
| clear() | | 清除数据 |
| findMinimum() | | 查找最小的值 |
#### MaxHead
| 方法名称 | 参数 | 描述 |
| --- | --- | --- |
| insert(value) | value: 值 | 向堆中插入一个新的值 |
| extract() | | 移除最大值 |
| size() | | 堆的大小 |
| isEmpty() | | 是否为空 |
| clear() | | 清除数据 |
| findMaxmum() | | 查找最大的值 |