数据结构和算法

线性结构

数组、

单链表和双链表

数组和链表区别:

数组:数组元素在内存上连续存放,可以通过下标查找元素;插入、删除需要移动大量元素,比较适用于元素很少变化的情况

链表:链表中的元素在内存中不是顺序存储的,查找慢,插入、删除只需要对元素指针重新赋值,效率高

B从内存存储来看

B-1. (静态)数组从栈中分配空间, 对于程序员方便快速,但是自由度小

B-2. 链表从堆中分配空间, 自由度大但是申请管理比较麻烦.


栈(stack),是一种线性存储结构,它有以下几个特点:

(01) 栈中数据是按照"后进先出(LIFO, Last In First Out)"方式进出栈的。

(02) 向栈中添加/删除数据时,只能从栈顶进行操作。

栈通常包括的三种操作:push、peek、pop。

push -- 向栈中添加元素。

peek -- 返回栈顶元素。

pop -- 返回并删除栈顶元素的操作。

队列

队列(Queue),是一种线性存储结构。它有以下几个特点:

(01) 队列中数据是按照"先进先出(FIFO, First-In-First-Out)"方式进出队列的。

(02) 队列只允许在"队首"进行删除操作,而在"队尾"进行插入操作。

队列通常包括的两种操作:入队列 和 出队列。

树形结构   :二叉树  红黑树


数据结构和算法_第1张图片

参考文章:http://www.cnblogs.com/skywang12345/p/3603935.html

你可能感兴趣的:(数据结构和算法)