https://blog.fundebug.com/2018/08/27/code-interview-data-structure/
https://www.jianshu.com/p/230e6fde9c75
1. 数组(Array): 每一个数组元素的位置由数字编号,称为下标或者索引(index)
基本操作: Inset,Get,Delete,Size
2. 栈 (Stack): 栈中的元素采用LIFO (Last In First Out),即后进先出.
eg.撤回,即Ctrl+Z,是我们最常见的操作之一:把之前的应用状态(限制个数)保存到内存中,最近的状态放到第一个.
栈的基本操作 (栈有初始化、压栈、出栈、判空、遍历、清空等主要方法) 都是对栈顶的元素进行操作
stack.size()
Push — 在栈的最上方插入元素
Pop — 返回栈最上方的元素,并将其删除
Top — 返回栈最上方的元素,并不删除 (stack.peek())
isEmpty — 查询栈是否为空
3. 队列
队列(Queue)与栈类似,都是采用线性结构存储数据。它们的区别在于,栈采用LIFO方式,而队列采用先进先出,即FIFO(First in First Out)。
队列的基本操作 queue.size() queue.isEmpty()
Enqueue — 在队列末尾插入元素 (boolean add(e)= offer(e))
Dequeue — 将队列第一个元素删除 (e=poll(): null; e=remove(): oSuchElementExceptio)
isEmpty — 查询队列是否为空
Top — 返回队列的第一个元素(peek(): null; element(): NoSuchElementException)
Python: It is especially useful in threaded programming when information must be exchanged safely between multiple thread
>>>q=Queue() ; >>>q.size() ; >>>q.empty() ; >>>q.put(e); >>>q.get([block]) Remove and return an item from the queue.
>>>q.task_done()
>>> q.join() Blocks until all items in the queue have been gotten and processed.
4. 链表
5. 图
6. 树
7. 前缀树
8. 哈希表
网友评论