数据结构

数据结构

一、什么是数据结构?

1. 数据
   数据即信息的载体,是能够输入到计算机中并且能被计算机识别、存储和处理的符号总称。

2. 数据元素
   数据元素是数据的基本单位,又称之为记录(Record)。一般,数据元素由若干基本项(或称字段、域、属性)组成。

3. 数据结构
   数据结构指的是数据元素及数据元素之间的相互关系,或组织数据的形式。

二、数据之间的结构关系

  1. 逻辑结构

    表示数据之间的抽象关系(如邻接关系、从属关系等),按每个元素可能具有的直接前趋数和直接后继数将逻辑结构分为“线性结构”和“非线性结构”两大类。

1. 特点:
* 只是描述数据结构中数据元素之间的联系规律
* 是从具体问题中抽象出来的数学模型,是独立于计算机存储器的(与机器无关)
2. 逻辑结构分类
    * 线性结构
    * 树形结构(层次结构)
    * 图状结构(网状结构)
    * 其他结构

 

  2. 存储结构

    逻辑结构在计算机中的具体实现方法,分为顺序存储方法、链接存储方法、索引存储方法、散列存储方法。

### 存储结构(关系)
1. 特点:
    * 是数据的逻辑结构在计算机存储器中的映象(或表示)
    * 存储结构是通过计算机程序来实现的,因而是依赖于具体的计算机语言的。
2. 存储结构分类
   
* 顺序存储    
    顺序存储(Sequential Storage):将数据结构中各元素按照其逻辑顺序存放于存储器一片连续的存储空间中。

* 链式存储
    链式存储(Linked Storage):将数据结构中各元素分布到存储器的不同点,用记录下一个结点位置的方式建立它们之间的联系,由此得到的存储结构为链式存储结构。


* 索引存储 索引存储(Indexed Storage):在存储数据的同时,建立一个附加的索引表,即索引存储结构=数据文件+索引表。 * 散列存储 散列存储(Hash Structure): 根据数据元素的特殊字段(称为关键字key),计算数据元素的存放地址,然后数据元素按地址存放,所得到的存储结构为散列存储结构(或Hash结构)。

三、栈和队列

  a.栈

  1. 定义
  栈是限制在一端进行插入操作和删除操作的线性表(俗称堆栈),允许进行操作的一端称为“栈顶”,另一固定端称为“栈底”,当栈中没有元素时称为“空栈”。

  2. 特点:

  * 栈只能在一端进行数据操作
  * 栈模型具有后进先出或者叫做后进先出的规律

  b.队列

  1. 定义
  队列是限制在两端进行插入操作和删除操作的线性表,允许进行存入操作的一端称为“队尾”,允许进行删除操作的一端称为“队头”。

  2. 特点:

  * 队列只能在队头和队尾进行数据操作
  * 栈模型具有先进先出或者叫做后进后出的规律

四、递归

1. 什么是递归?
  所谓递归函数是指一个函数的函数体中直接调用或间接调用了该函数自身的函数。这里的直接调用是指一个函数的函数体中含有调用自身的语句,间接调用是指一个函数在函数体里有调用了其它函数,而其它函数又反过来调用了该函数的情况。

2. 递归函数调用的执行过程分为两个阶段
  递推阶段:从原问题出发,按递归公式递推从未知到已知,最终达到递归终止条件。
  回归阶段:按递归终止条件求出结果,逆向逐步代入递归公式,回归到原问题求解。

3. 优点与缺点
  优点:递归可以把问题简单化,让思路更为清晰,代码更简洁
  缺点:递归因系统环境影响大,当递归深度太大时,可能会得到不可预知的结果

  

 

posted @ 2019-05-27 20:09  爱吃西红柿的猫  阅读(260)  评论(0编辑  收藏  举报