datastructures-algorithms-ts
v0.0.9
Published
常用的数据结构与算法typescript实现
Downloads
1
Maintainers
Readme
数据结构与算法
- 常用的数据结构与算法typescript实现
- npm => https://www.npmjs.com/package/datastructures-algorithms-ts
- github => https://github.com/jarrett-k/datastructures-algorithms-ts
栈
一种遵从后进先出(LIFO)原则的有序集合。新添加或待删除的元素都保存在栈的同一端,称作栈顶,另一端就叫栈底。在栈里,新元素都靠近栈顶,旧元素都接近栈底。
import { Stack } from 'datastructures-algorithms-ts'
const stack = new Stac<number>k()
stack.push(...[1,2,3])
stack.push(4)
- push(element(s)):添加一个(或几个)新元素到栈顶。
- pop():移除栈顶的元素,同时返回被移除的元素。
- peek():返回栈顶的元素,不对栈做任何修改(该方法不会移除栈顶的元素,仅仅返回它)。
- isEmpty():如果栈里没有任何元素就返回 true,否则返回 false。
- clear():移除栈里的所有元素。
- size():返回栈里的元素个数。
- toString(): 返回栈里的内容的字符串表现形式。
队列
普通队列
普通队列是遵循先进先出(FIFO,也称为先来先服务)原则的一组有序的项。队列在尾部添加新元素,并从顶部移除元素。最新添加的元素必须排在队列的末尾。
import { Queue } from 'datastructures-algorithms-ts'
const queue = new Queue<number>()
queue.enqueue(...[1,2,3])
queue.enqueue(4)
- enqueue(element(s)):向队列尾部添加一个(或多个)新的项。
- dequeue():移除队列的第一项(即排在队列最前面的项)并返回被移除的元素。
- peek():返回队列中第一个元素。队列不做任何变动(不移除元素,只返回元素信息)。
- isEmpty():如果队列中不包含任何元素,返回 true,否则返回 false。
- clear():移除队列里的所有元素。
- size():返回队列包含的元素个数,与数组的 length 属性类似。
- toString(): 返回栈里的内容的字符串表现形式。
双端队列
双端队列(deque,或称 double-ended queue)是一种允许我们同时从前端和后端添加和移除元素的特殊队列。
import { Queue } from 'datastructures-algorithms-ts'
const queue = new Queue<number>()
queue.enqueue(...[1,2,3])
queue.enqueue(4)
- addFront(element):该方法在双端队列前端添加新的元素
- addBack(element):该方法在双端队列后端添加新的元素
- removeFront():该方法会从双端队列前端移除第一个元素
- removeBack():该方法会从双端队列后端移除第一个元素
- peekFront():该方法返回双端队列前端的第一个元素
- peekBack():该方法返回双端队列后端的第一个元素)。
- isEmpty():如果队列中不包含任何元素,返回 true,否则返回 false。
- clear():移除队列里的所有元素。
- size():返回队列包含的元素个数,与数组的 length 属性类似。
- toString(): 返回栈里的内容的字符串表现形式。
链表
链表存储有序的元素集合,但不同于数组,链表中的元素在内存中并不是连续放置的。每个元素由一个存储元素本身的节点和一个指向下一个元素的引用(也称指针或链接)组成。
import { LinkedList } from 'datastructures-algorithms-ts'
const list = new LinkedList<number>()
list.push(1)
- push(element):向链表尾部添加一个新元素。
- insert(element, position):向链表的特定位置插入一个新元素。
- getElementAt(index):返回链表中特定位置的元素。如果链表中不存在这样的元素,则返回 undefined。
- remove(element):从链表中移除一个元素。
- indexOf(element):返回元素在链表中的索引。如果链表中没有该元素则返回-1。
- removeAt(position):从链表的特定位置移除一个元素。
- isEmpty():如果链表中不包含任何元素,返回 true,如果链表长度大于 0则返回 false。
- size():返回链表包含的元素个数,与数组的 length 属性类似。
- toString():返回表示整个链表的字符串。
冒泡排序
冒泡排序比较所有相邻的两个项,如果第一个比第二个大,则交换它们。元素项向上移动至正确的顺序,就好像气泡升至表面一样,冒泡排序因此得名。
import { bubbleSort } from 'datastructures-algorithms-ts'
bubbleSort<number>([1,2,3], (a, b) => { Math.random() > 0.5 ? 1 : -1 }