数据结构 算法 笔记1 概览
2016-05-07 15:13
316 查看
程序 = 数据结构 + 算法
数据结构 = 逻辑结构 + 物理结构(存储结构) + 运算
根据三种方式划分有:
逻辑结构 有 :线性结构, 非线性结构
物理结构(存储结构) 有 :顺序存储结构,链式存储结构,索引存储结构,散列存储结构
运算 : 插入,删除,检索,更新,排序等
算法 有 : 递归,回溯,贪婪,分治,动态规划
线性结构
特征:数据元素(结点)之间存在着一对一的关系,其结构中仅有一个开始结点和终点结点,其余结点仅有一个直接前趋和一个直接后继
1.数据元素之间满足唯一的线性关系。
2.每个数据元素(除第一个和最后一个外)只有一个直接前趋和一个直接后继。
线性表 (顺序表,链表,栈,队列)
1.最简单和最常用的一种数据结构
2.由n个数据元素(结点)组成的有限序列
顺序表
1.线性表的数据元素按逻辑次序依次存入一组地址真实的存储单位。
链表 (单向链表,双向链表,循环链表)
1.线性表的数据元素除了存储自身的信息以外,还需要一个存储指示器后继元素,存储位置的指针。
2.一个结点的存储结构为data|next,n个结点链成一个链表。
栈 (Stack)
1.限定在表的一端进行插入和删除运算的线性表
2.遵循后进先出(Last In First Out)原则
队列 (Quene)
按存储方式划分:顺序队列,链队列,环形队列
1.只允许在表的一端进行元素插入,而在另一端进行元素删除
2.遵循先进先出(First In First Out)原则
非线性结构
特征:数据元素之间存在一对多或多对多的关系,即一个结点可能有多个直接前趋和多个直接后继
树形结构
1.数据元素之间有着明显的层次关系,并且每个元素只与上一层中的一个元素(双亲结点)及下层中的多个元素(孩子结点)相关
二叉树 (二叉树,满二叉树,完全二叉树,最优二叉树)
按存储方式划分:顺序存储结构,链式存储结构
1.每个结点至多只有两个孩子,而其子树有左右之分的有序树。
2.符合三大性质(具体后续文章说明)
图型结构 (graph)
遍历方式:深度优先搜索遍历,广度优先搜索遍历
存储结构:邻接矩阵表示法,邻接表表示法
1.结点之间的关系是任意的。
2.特殊的树形结构
多维数组
按内存表现形式划分: 行向量,列向量
1.线性表的推广
2.由于计算机的内存结构是一唯的,所以二位数据使用行向量或列向量表示
广义表
结点数据结构: tag|data/slink|link
tag: 用来区分当前结点是原子还是子表
data/slink 存放原子数据 或者 子表地址
link 存放下一个元素对应的结点的地址
1.带有层次的非线性结构
2.通常使用链式存储结构
3.每个结点由三个域构成,其中tag是一个标志位,用来区分当前结点是原子还是子表。
数据结构 = 逻辑结构 + 物理结构(存储结构) + 运算
根据三种方式划分有:
逻辑结构 有 :线性结构, 非线性结构
物理结构(存储结构) 有 :顺序存储结构,链式存储结构,索引存储结构,散列存储结构
运算 : 插入,删除,检索,更新,排序等
算法 有 : 递归,回溯,贪婪,分治,动态规划
线性结构
特征:数据元素(结点)之间存在着一对一的关系,其结构中仅有一个开始结点和终点结点,其余结点仅有一个直接前趋和一个直接后继
1.数据元素之间满足唯一的线性关系。
2.每个数据元素(除第一个和最后一个外)只有一个直接前趋和一个直接后继。
线性表 (顺序表,链表,栈,队列)
1.最简单和最常用的一种数据结构
2.由n个数据元素(结点)组成的有限序列
顺序表
1.线性表的数据元素按逻辑次序依次存入一组地址真实的存储单位。
链表 (单向链表,双向链表,循环链表)
1.线性表的数据元素除了存储自身的信息以外,还需要一个存储指示器后继元素,存储位置的指针。
2.一个结点的存储结构为data|next,n个结点链成一个链表。
栈 (Stack)
1.限定在表的一端进行插入和删除运算的线性表
2.遵循后进先出(Last In First Out)原则
队列 (Quene)
按存储方式划分:顺序队列,链队列,环形队列
1.只允许在表的一端进行元素插入,而在另一端进行元素删除
2.遵循先进先出(First In First Out)原则
非线性结构
特征:数据元素之间存在一对多或多对多的关系,即一个结点可能有多个直接前趋和多个直接后继
树形结构
1.数据元素之间有着明显的层次关系,并且每个元素只与上一层中的一个元素(双亲结点)及下层中的多个元素(孩子结点)相关
二叉树 (二叉树,满二叉树,完全二叉树,最优二叉树)
按存储方式划分:顺序存储结构,链式存储结构
1.每个结点至多只有两个孩子,而其子树有左右之分的有序树。
2.符合三大性质(具体后续文章说明)
图型结构 (graph)
遍历方式:深度优先搜索遍历,广度优先搜索遍历
存储结构:邻接矩阵表示法,邻接表表示法
1.结点之间的关系是任意的。
2.特殊的树形结构
多维数组
按内存表现形式划分: 行向量,列向量
1.线性表的推广
2.由于计算机的内存结构是一唯的,所以二位数据使用行向量或列向量表示
广义表
结点数据结构: tag|data/slink|link
tag: 用来区分当前结点是原子还是子表
data/slink 存放原子数据 或者 子表地址
link 存放下一个元素对应的结点的地址
1.带有层次的非线性结构
2.通常使用链式存储结构
3.每个结点由三个域构成,其中tag是一个标志位,用来区分当前结点是原子还是子表。
相关文章推荐
- 最大子列和问题
- 数据结构总结文
- 数据结构-队列的顺序存储(循环队列)
- 数据结构(树链剖分):COGS 2109. [NOIP2015] 运输计划
- 数据结构(树链剖分,堆):HNOI 2016 network
- 剖析Java中HashMap数据结构的源码及其性能优化
- Java千百问_06数据结构(009)_void是什么
- Java千百问_06数据结构(008)_null属于哪种数据类型
- 单向链表结点删除问题
- Java千百问_06数据结构(007)_String属于基本数据类型吗
- 二叉树
- 栈、队列、树、字符串的存储结构
- Java集合-HashMap数据结构详解
- 数据结构--绪论自测题
- 队列的顺序存储结构和链式存储结构
- 数据结构基础知识
- 栈及栈的链式存储结构(栈链)
- 数据结构_线性表_链式存储_单向循环链表的基本操作
- 如何判断链表中是否有环
- 队列,数组式