为毛要学数据

  一个好的程序无非是选择了一个合理的数据结构和一个好的算法。所以要学好数据结构,是提升进一步提高程序设计水平的关键之一。

什么是数据结构

  1)数据结构的定义

  数据是人们利用文字符号、数字符号以及其他规定的符号对现实世界的事物及其活动所做的抽象描述。

  数据元素是数据的基本单位(例如学生是一个数据元素)。

  数据结构是指数据以及相互之间的联系,可以看作是相互间存在特定关系的数据元素的集合。

  数据的逻辑结构和存储结构都反映了数据的结构关系。但通常所说的数据结构是指数据的逻辑结构,不涉及存储结构的含义。

  通常采用二元组表示:B=(K,R)

  B是一种数据结构,它由数据元素的集合K和K上二元关系的集合R所组成。

  

  例如,学生表中有7个数据元素,依次用k1~k7表示,则对应的二元组表示为B=(K,R)

  K={k1,k2,k3,k4,k5,k6,k7}

  R={r}

  r={<k1,k2>,<k2,k3>,<k3,k4>,<k4,k5>,<k5,k6>,<k6,k7>}

  数据结构还能狗利用图形形象的表示出来,图像中的每个结点对应着一个数据元素,两结点之间的连线对应着关系中的一个序偶。

  2)数据结构类型。

  数据结构分为线性结构和非线性结构两大类。

  线性结构中,开始结点和终端结点都是唯一的,除了开始结点和终端结点外,其余结点都有且仅有一个前驱,有且有一个后继,顺序表就是典型的线性结构。

  非线性结构又可以细分为树形结构和图形结构两类。

  线性结构是树形结构的特殊情况,而树形结构又是图形结构的特殊情况。

  图形结构例子:

  K={a,b,c,d,e}

  R={r}

  r={(a,b),(a,c),(b,c),(c,d),(c,e),(d,e)}

  

  3)数据结构和数据类型

  数据类型最早出现在高级语言中,是对数据的取值范围、每一数据的结构以及允许施加的操作的一种描述,在用程序语言编写的程序中,每个变量、常量或表达式都有一个它所属的确定的数据类型。

  数据类型可分为简单类型和结构类型两种。

  简单类型中的每个数据都是无法在分割的整体,如一个整数、实数、字符、指针等都是无法在分割的整体,所以他们所属的类型均为简单类型。

  结构类型是由简单类型按照一定的规则构造而成,并且结构类型中可以包含结构类型,所以一种结构类型中的数据可以分解为若个个简单数据或结构数据,每个结构数据仍可再分。

  数据类型也可以被定义为一种数据结构和能够对该数据结构进行的操作的集合。

  下面总结C语言中常用的数据类型。

  1.基本数据类型:int、float、char。int可以有三个限定词:short,long,unsigned。float有三种形式:float,double和long double。

  2.指针类型:对于定义int i,则&i操作是取变量i的地址;对于定义int *p,这里的p是指向一个整数的指针,则*p操作是取p指针所指的值,即p所指地址的内容。

  3.数组类型:int a[10],定义了包含10个整数的数组a。

  4.结构体类型:

  struct teacher{

    int no;

    char name[8];

    int age;

  }

  5.共用体类型

  union tag{

    int no1;

    char no2[2];

  }

  6.自定义类型

  typedef char elemtype;

算法及其描述

  数据结构、算法和程序是密不可分的,他们之间的关系可以表示为:数据结构+算法=程序。

  1)什么是算法。

  一个算法具有以下5个重要特性:

  1.有穷性。一个算法必须总是在执行有穷步之后结束,且每一步都可在有穷时间内完成。

  2.确定性。一个算法中每一条指令必须有确切的含义,不会产生二义性。

  3.可行性。一个算法是可行的,即算法中描述的操作都可以通过已经实现的基本运算执行有限次来实现。

  4.输入。一个算法有零个或多个输入。这些输入取自于某个选定的对象的集合。

  5.输出。一个算法有一个或多个输出。这些输出是同输入有某些特定关系的量。

  2)算法的性能标准。

  判断一个算法的优劣主要有以下几个标准:

  1.正确性。要求算法能够正确的执行预先规定的功能。这是最重要也是最基本的规则。

  2.可使用性。算法应当是可读的,即可读性好。为了达到这个要求,算法的逻辑必须是清晰的、简单的和结构化的。

  3.可读性。算法应当是可读的,即可读性好。为了达到这个要求,算法的逻辑必须是清晰的、简单的和结构化的

  4.健壮性。要求算法具有很好的容错性,即提供例外处理,能够对不合理的数据进行检查,不会经常出现异常中断或司机现象。

  5.效率。算法的效率主要指算法执行时计算机资源的消耗,包括存储和运行时间的开销,前者叫做算法的空间代价,后者叫做算法的时间代价。

posted @ 2017-10-10 15:55  君子喻于义  阅读(130)  评论(0编辑  收藏  举报