您的位置:首页 > 理论基础 > 数据结构算法

数据结构 算法 笔记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是一个标志位,用来区分当前结点是原子还是子表。

    

  

  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: