数据结构学习笔记一:数据结构基础

来源:互联网 发布:破解软件注册码教程 编辑:程序博客网 时间:2024/04/29 11:25

     做个决定,从今天开始,每天一题,把自己每天学的东西写出来,也算是个学习笔记。

    驽马十驾,功在不舍

    何谓数据结构?

    数据结构反映数据的内部构成,即一个数据由哪些成分数据组成,以什么样的形式组成,呈现什么样的结构。数据结构包括逻辑上的数据结构和物理上的数据结构。逻辑上的数据结构指的是成分数据之间的逻辑关系,物理上的数据结构指的是成分数据的物理存储形式。

   

 数据类型

    数据类型根据数据结构进行划分,在高级程序设计语言中,数据类型用来说明一个数据在数据分类中的归属。它 是数据的属性,这种属性限定了数据的取值范围。

   最常用的数据结构是:数组结构和记录结构。

    数组结构的特点:

1.成分数据的个数固定。它们之间的逻辑结构是由成分数据的序号(也即数组的下标)来体现。这些成分数据按照序号的先后顺序一个接一个地排列起来。

2.每一个成分数据具有相同的数据结构(可以是简单的数据结构,也可以是复杂的数据结构),因而属于同样的数据类型(可以是简单的数据类型,也可以示复杂的数据类型)。

3.所有成分数据被依序安排在一片连续的存储区域中。

概括起来,数组结构是线性的,均匀的,其成分数据可随机访问的结构。

    记录结构的特点:

1.同数组结构一样,成分数据的个数是固定的。但是它们之间没有自然序,它们之间处于平等地位。每个成分数据都是一个域并被赋予一个域名。不同的域有不同的域名。

2.不同的域允许有不同的结构,因而属于不同的数据类型。

3.与数组结构一样,它们可以随机访问,访问的方式是按域名访问。

**********************************算 法****************************************

算法:描述解决问题的步骤。是一个运算序列。

该运算序列具备四个特征:

1.有限性

  序列的项数有限,且每一项都可在有限的时间内完成。

2.确定性

  序列的每一项运算都有确定性,没有二义性。

3.可以没有输入项,但一定要有输出项。

4.可行性

 对于任意合法的输入都能得到正确的输出。

这些特征可用来判别一个确定的序列是不是一个算法。

 

作为运算序列的算法,有三个要素:

数据,运算,控制

即:

1.作为运算序列中各种运算对象和运算结果的数据

2.运算序列中的各种运算

3.运算序列中的控制转移。

数据:

简单最基本有布尔值数据、字符数据、整数和实数数据等;

稍复杂的有向量、矩阵、记录等数据;更复杂的有集合、树和图,还有声音、图形、图像等数据

运算:

最基本最初等的有赋值运算、算术运算、逻辑运算和关系运算等;

稍复杂的有算术表达式和逻辑表达 式等;

更复杂的有函数值计算、向量运算、矩阵运算、集合运算,以及表、栈、队列、树 和图上的运算等:此外,

还可能有以上列举的运算的复合和嵌套。

控制:

控制相对单纯,在串行计算中,它只有顺序、分支、循环、递归和无条件转 移等几种。

************************************抽象数据类型********************************************** 虽然写到这里,有点不想写了,可是,不提抽象数据类型,实在是对不起这员大将。

根据自顶向下的步骤,在考虑算法设计时,应该分两层进行考虑。

首先考虑算法的顶层运算步骤,然后考虑底层的运算步骤。

顶层的运算步骤,是在数据模型级上的运算步骤。

   涉及的数据是数据模型中的一个变量,暂不考虑数据结构。

   涉及的运算时数据模型上的运算。即以数据模型上的变量为数据对象或数据结果,或二者兼之。

底层的运算步骤就是顶层步骤的具体实现。包括两部分:

一、数据模型的具体表示,即数据结构

二、定义在数据模型上的数据运算的具体实现。

底层设计是顶层实现的具体实现,底层实现为顶层实现服务。为了将顶层和底层实现隔离,使在实现时不会互相牵制、互相影响,必须对两者的接口进行一次抽象。让底层只通过这个接口为顶层服务,顶层也只能通过这个接口调用底层运算。这个接口就是抽象数据模型。即:Abstract Data Types.

 

要用计算机解决一个复杂的问题,要经过以下几个步骤:

1.将实际问题数学化。

即把一个实际问题抽象成一个一般的数学问题。这一步要引入数学概念,精确地阐述数学问题,弄清问题的已知条件,所要求的结果,并且找出两者之间的显式或隐式的关系。

2.对于确定的数学问题,找出其解决方法,即算法设计。

 这一步要建立求解模型。即确定问题的数据模型并定义该模型上的一组运算,然后借助对这组运算的调用和控制,从问题的已知条件出发,导向所要求的结果。形成算法并用自然语言来表达。这种语言不是程序设计语言,不能被计算机所接受。

3.在计算机上用程序设计语言实现算法。

4.在计算机编译,调试和测试所编制的程序,直到输出所要的结果。

 

 抽象数据类型是算法设计和程序设计中的重要概念。

严格的定义是一个数据模型和定义在该数据模型上的,作为算法设计组件的一组运算。

抽象数据类型把数据模型和数据运算紧密地结合在一起。

为了提高算法的效率,必须认真考虑数据模型。设计良好的数据模型提高运算效率。

 

>*_*<

长舒一口气,今日到此结束。休息休息!

 

原创粉丝点击