数据结构基础总结

1、 数据结构简介
数据结构与算法、程序设计之间的关系:数据结构 + 算法 = 程序设计
数据的逻辑结构:线性结构、树结构、图
数据的存储结构:顺序存储结构、链式存储结构
数据结构种类:串(String),数组(Array)、链表(Linked List)、队列(Queue)、栈(Stack)、哈希表(Hash),堆(Heap),图(Graph),树(Tree)

2、 线性表
(1)顺序表:基于数组,每个存储单元的地址是连续的;查询、更改较快,新增和删除较慢
(2)链表:基于链表,每个存储单元的地址是不连续的,逻辑上相邻的数据元素在物理位置上不一定相邻,每一个存储单元称为节点;查询、更改较慢,新增和删除较快

3、 串
字符串是由字符组成的有限序列,是常用的一种非数值数据。串的逻辑结构是线性表,串是一种特殊的线性表,限制其元素类型是字符;串的操作特点与线性表不同,主要对字串进行操作;通常采用顺序存储结构存储。

4、 栈和队列
顺序栈:采用顺序存储结构
链式栈:采用链式存储结构
顺序队列:采用顺序存储结构
链式队列:采用链式存储结构

5、 数组和广义表
数组:数组是顺序存储结构的随机存取结构,数组是其他数据结构实现顺序存储的基础。
广义表:广义表是一种复杂的数据结构,它是线性表的扩展,能够表示树结构和图结构。广义表在文本处理、人工智能和计算机图形学等领域有着广泛的应用。

6、 树和二叉树
树:树是数据元素(节点)之间具有层次关系的非线性结构。在树结构中,根节点没有前驱结点;除根以外的节点只有一个前驱结点,有零至多个后继节点。树最强大的功能是进行储存查询,因此计算机科学家们创造出了红黑树,B+树,字典树,堆,并查集等数据结构。
二叉树的遍历规则:先跟次序(根左右)、中根次序(左根右)、后根次序(左右根)
二叉树的存储结构:主要采用链式存储结构,顺序存取结构仅适用于完全二叉树(满二叉树)
Huffman树:用于实现Huffman编码。

7、 图
图是一种数据元素之间具有多对多关系的非线性数据结构。图中的每个元素都可以有多个前驱元素和多个后继元素,任意两个元素都可以相邻。图结构比线性表和树更复杂。

8、排序算法
插入排序:直接插入排序、二分法插入排序
直接插入排序:从第i个开始,假设前i个元素构成的子序列是排序的,然后第i个元素从子序列中找到位子插入(顺序查找),算法稳定
二分法插入排序:从第i个开始,假设前i个元素构成的子序列是排序的,然后第i个元素从子 序列中找到位子插入(二分法查找),算法稳定

交换排序:冒泡排序、快速排序
冒泡排序:每跑一趟把最大的元素交换到最后面(反之),算法稳定
快速排序:每跑一趟把第一个元素作为基准值,1小于基准值的放前面,2大于基准值的放后面,在基准值前面和后面的序列重复执行1、2,算法不稳定

选择排序:直接选择排序、堆排序
直接选择排序:每次选择一个最大的放在后面(反之),算法不稳定

你可能感兴趣的:(数据结构,数据结构,算法,二叉树)