2019-03-04 数据结构

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个排序好的数组

重新排列数组中的正数和负数

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.



使用队列实现栈

倒转队列的前K个元素

使用队列将1到n转换为二进制

4. 链表

5. 图

6. 树

7. 前缀树

8. 哈希表

你可能感兴趣的:(2019-03-04 数据结构)