# 数据结构与算法必会代码实现
## 数组
#### 1、数组实现增、删、改、查 [(Java 实现)](https://github.com/luxiangqiang/Data-Structure-Coding/blob/master/Array/JAVA/Array.md)
#### 2、实现一个支持动态扩容的数组 [(Java 实现)](https://github.com/luxiangqiang/Data-Structure-Coding/blob/master/Array/JAVA/DynamicDilatationArray.md)
#### 3、实现一个大小固定的有序数组,支持动态增删改操作 ([Java 实现](https://github.com/luxiangqiang/Data-Structure-Coding/blob/master/Array/JAVA/FixedOrderArray.md))
#### 4、两个有序数组的合并 ([Java 实现](https://github.com/luxiangqiang/Data-Structure-Coding/blob/master/Array/JAVA/%E4%B8%A4%E4%B8%AA%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84%E7%9A%84%E5%90%88%E5%B9%B6.md))
## 链表
#### 1、单链表的插入、删除、查找 ([JavaScript 实现](https://github.com/luxiangqiang/Data-Structure-Coding/blob/master/Link_List/javascript/SinglyLinkedList.md) | [Java 实现](https://github.com/luxiangqiang/Data-Structure-Coding/blob/master/Link_List/JAVA/SinglyLinkedList06.md))
#### 2、双链表的插入、删除 ([JavaScript 实现](https://github.com/luxiangqiang/Data-Structure-Coding/blob/master/Link_List/javascript/DoubleLinkedList.md))
#### 3、循环链表的插入、查找、删除 ([JavaScript 实现](https://github.com/luxiangqiang/Data-Structure-Coding/blob/master/Link_List/javascript/CircularLinkedList.md))
#### 4、两个有序链表的合并 ([JavaScript 实现](https://github.com/luxiangqiang/Data-Structure-Coding/blob/master/Link_List/javascript/%E4%B8%A4%E4%B8%AA%E6%9C%89%E5%BA%8F%E9%93%BE%E8%A1%A8%E7%9A%84%E5%90%88%E5%B9%B6.md) | [Java 实现](https://github.com/luxiangqiang/Data-Structure-Coding/blob/master/Link_List/JAVA/LinkedListAlgo07.md))
#### 5、删除倒数第 K 个结点 ([JavaScript 实现](https://github.com/luxiangqiang/Data-Structure-Coding/blob/master/Link_List/javascript/%E5%88%A0%E9%99%A4%E5%80%92%E6%95%B0%E7%AC%AC%20K%20%E4%B8%AA%E7%BB%93%E7%82%B9.md) | [Java 实现](https://github.com/luxiangqiang/Data-Structure-Coding/blob/master/Link_List/JAVA/LinkedListAlgo07.md))
#### 6、反转链表 [(JavaScript 实现](https://github.com/luxiangqiang/Data-Structure-Coding/blob/master/Link_List/javascript/%E5%8F%8D%E8%BD%AC%E9%93%BE%E8%A1%A8.md) | [Java 实现](https://github.com/luxiangqiang/Data-Structure-Coding/blob/master/Link_List/JAVA/LinkedListAlgo07.md))
#### 7、链表环的检测 ([JavaScript 实现](https://github.com/luxiangqiang/Data-Structure-Coding/blob/master/Link_List/javascript/%E9%93%BE%E8%A1%A8%E7%8E%AF%E7%9A%84%E6%A3%80%E6%B5%8B.md) | [Java 实现](https://github.com/luxiangqiang/Data-Structure-Coding/blob/master/Link_List/JAVA/LinkedListAlgo07.md))
#### 8、求链表的中间结点 ([JavaScript 实现](https://github.com/luxiangqiang/Data-Structure-Coding/blob/master/Link_List/javascript/%E6%B1%82%E9%93%BE%E8%A1%A8%E7%9A%84%E4%B8%AD%E9%97%B4%E7%BB%93%E7%82%B9.md) | [Java 实现](https://github.com/luxiangqiang/Data-Structure-Coding/blob/master/Link_List/JAVA/LinkedListAlgo07.md))
## 栈
#### 1、实现一个基于数组的顺序栈([Java 实现]())
#### 2、实现一个基于链表的链式栈 ([Java 实现](<https://github.com/luxiangqiang/Data-Structure-Coding/blob/master/Stack/JAVA/StackBasedLinkedList.md>))
## 队列
#### 1、实现一个基于数组的顺序队列 ([Java 实现](https://github.com/luxiangqiang/Data-Structure-Coding/blob/master/Queue/JAVA/ArrayQueue.md))
#### 2、实现一个循环队列 ([Java 实现](<https://github.com/luxiangqiang/Data-Structure-Coding/blob/master/Queue/JAVA/CircularQueue.md>))
## 树
#### 1、实现二叉树的增、删、查、(前|中|后)遍历 ([JavaScript 实现](https://github.com/luxiangqiang/Data-Structure-Coding/blob/master/Tree/JavaScript/%E4%BA%8C%E5%8F%89%E6%9F%A5%E6%89%BE%E6%A0%91.md) | [Java 实现](https://github.com/luxiangqiang/Data-Structure-Coding/blob/master/Tree/JAVA/%E4%BA%8C%E5%8F%89%E6%9F%A5%E6%89%BE%E6%A0%91.md))
## 堆
#### 1、堆的插入与删除 ([Java 实现](<https://github.com/luxiangqiang/Data-Structure-Coding/blob/master/Heap/JAVA/Heap.md>))
#### 2、堆排序 ([JavaScript 实现](https://github.com/luxiangqiang/Data-Structure-Coding/blob/master/Sorts/JAVA/sorts.md) | [Java 实现](https://github.com/luxiangqiang/Data-Structure-Coding/blob/master/Heap/JAVA/HeapSort.md))
## Trie(字典树)
#### 1、实现一个字典树 ([JavaScript 实现](<https://github.com/luxiangqiang/Data-Structure-Coding/blob/master/Trie/JavaScript/Trie.md>) | [Java 实现](https://github.com/luxiangqiang/Data-Structure-Coding/blob/master/Trie/JAVA/Trie%20%E5%AD%97%E5%85%B8%E6%A0%91.md))
## 排序
#### 1、冒泡排序 ([JavaScript 实现](https://github.com/luxiangqiang/Data-Structure-Coding/blob/master/Sorts/JavaScript/sorts.md) | [Java 实现](https://github.com/luxiangqiang/Data-Structure-Coding/blob/master/Sorts/JAVA/sorts.md))
#### 2、插入排序 ([JavaScript 实现](https://github.com/luxiangqiang/Data-Structure-Coding/blob/master/Sorts/JavaScript/sorts.md) | [Java 实现](https://github.com/luxiangqiang/Data-Structure-Coding/blob/master/Sorts/JAVA/sorts.md))
#### 3、选择排序 ([JavaScript 实现](https://github.com/luxiangqiang/Data-Structure-Coding/blob/master/Sorts/JavaScript/sorts.md) | [Java 实现](https://github.com/luxiangqiang/Data-Structure-Coding/blob/master/Sorts/JAVA/sorts.md))
#### 4、希尔排序 ([JavaScript 实现](https://github.com/luxiangqiang/Data-Structure-Coding/blob/master/Sorts/JavaScript/ShellSort.md))
#### 5、归并排序 ([JavaScript 实现](https://github.com/luxiangqiang/Data-Structure-Coding/blob/master/Sorts/JavaScript/MergeSort.md) | [Java 实现](https://github.com/luxiangqiang/Data-Structure-Coding/blob/master/Sorts/JavaScript/%E6%B1%82%E7%AC%ACK%E5%A4%A7%E5%85%83%E7%B4%A0.md))
#### 6、快速排序 ([JavaScript 实现](https://github.com/luxiangqiang/Data-Structure-Coding/blob/master/Sorts/JavaScript/QuickSort.md) | [Java 实现](https://github.com/luxiangqiang/Data-Structure-Coding/blob/master/Sorts/JAVA/QuickSort.md))
#### 7、求第 K 大元素 ([JavaScript 实现]([https://github.com/luxiangqiang/Data-Structure-Coding/blob/master/Sorts/JavaScript/%E6%B1%82%E7%AC%ACK%E5%A4%A7%E5%85%83%E7%B4%A0.md](https://github.com/luxiangqiang/Data-Structure-Coding/blob/master/Sorts/JavaScript/求第K大元素.md)))
## 查找
#### 1、最简单的二分查找 ([JavaScript 实现](https://github.com/luxiangqiang/Data-Structure-Coding/blob/master/Find/JavaScript/binarySearch.md) | [Java 实现](https://github.com/luxiangqiang/Data-Structure-Coding/blob/master/Find/Java/BinarySearch.md))
#### 2、二分查找的四个扩展 ([JavaScript 实现](https://github.com/luxiangqiang/Data-Structure-Coding/blob/master/Find/JavaScript/binarySearch.md) | [Java 实现](https://github.com/luxiangqiang/Data-Structure-Coding/blob/master/Find/Java/BinarySearch.md))
## 遍历
#### 1、深度优先遍历 (JavaScript 实现| [Java 实现](https://github.com/luxiangqiang/Data-Structure-Coding/blob/master/Map/Java/BearthFirstSearch.md))
#### 2、广度优先遍历 (JavaScript 实现 | [Java 实现](https://github.com/luxiangqiang/Data-Structure-Coding/blob/master/Map/Java/DepthFirstSearch.md))