第十二章算法与数据结构

12.1 算法的基本概念

该节知识点所占试题比重为12%,属于重点考查对象,基本上每次必考,主要考查算法的定义和对算法复杂度的理解。历次试题分值在0-4分之间波动。

12.1.1 考点1: 算法的定义

算法是对一个问题求解步骤的一种描述,是求解问题的方法,它是指令的有限序列,其中每条指令表示一个或者多个操作。一般来说,一个算法具有以下5个主要特性。

有穷性:一个算法(对任何合法的输入)在执行有穷步后能够结束,并且在有限的时间内完成。

确定性:算法中的每一步都有确切的含义。

可行性:算法中的操作能够用已经实现的基本运算执行有限次来实现。

输入:一个算法有零个或者多个输入,零个输入就是算法本身确定了初始条件。

输出:一个算法有一个或者多个输出,以反映出数据加工的结果。

12.1.2 考点2:算法复杂度

算法复杂度包括时间复杂度和空间复杂度,是衡量一个算法好坏的度量。

1、时间复杂度:基本操作重复执行的次数的阶数 T(n)=o(f(n))

2、空间复杂度:是算法所需空间的度量。

G(n)= O(f(n))
例1:NXN矩阵相乘
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{c[i][j]=0;
for(k=1;k<=n;k++)
c[i][j]=c[i][j]+a[i][k]*b[k][j];
}

12.2 数据结构的定义

该节知识点所占试题比重为12%,属于重点考查对象,基本上每次必考,主要考查数据的逻辑结构和存储结构。历次试题分值在0-4分之间波动。

12.2.1考点1:什么是数据结构

一、基本概念和术语

数据(data)—所有能输入到计算机中去的描述客观事物的符号

数据元素(data element)—数据的基本单位,也称节点(node)或记录(record)

数据项(data item)—有独立含义的数据最小单位,也称域(field)

数据结构(data structure)—数据元素和数据元素关系的集合

数据的逻辑结构—只抽象反映数据元素的逻辑关系数据的存储(物理)结构—数据的逻辑结构在计算机存储器中的实现

存储结构分为:

顺序存储结构——借助元素在存储器中的相对位置来表示数据元素间的逻辑关系

链式存储结构——借助指示元素存储地址的指针表示数据元素间的逻辑关系

1536

元素2

1400

元素1

1346

元素3

元素4

1345

h

存储地址

存储内容

指针

1345

元素1

1400

1346

元素4

…….

……..

…….

1400

元素2

1536

…….

……..

…….

1536

元素3

1346

链式存储

h

12.2.2考点2:数据结构的图形表示

根据数据元素之间关系的不同,通常有4种结构:集合、线性结构、树型结构和图状结构。

12.3线性表

线性表一般和其他知识点结合起来出题。在每次所考的数据结构、栈、队列、链表、查找、排序等试题中,均涉及线性表的概念。

12.3.1考点1:线性表

一、线性结构特点:在数据元素的非空有限集中

存在唯一的一个被称作“第一个”的数据元素

存在唯一的一个被称作“最后一个”的数据元素

除第一个外,集合中的每个数据元素均只有一个前驱

除最后一个外,集合中的每个数据元素均只有一个后继

二、线性表的逻辑结构

定义:一个线性表是n个数据元素的有限序列

例 英文字母表(A,B,C,…..Z)是一个线性表

特征:

元素个数n—表长度,n=0空表

1

ai的直接前驱是ai-1,a1无直接前驱

ai的直接后继是ai+1,an无直接后继

12.3.2考点2:线性表的顺序存储结构

它用一组地址连续的存储单元来存储线性表的元素。

线性表中第i+1个元素的存储位置loc(ai+1)和第i个元素的存储位置loc(ai)满足以下关系:

Loc(ai+1)=loc(ai)+S其中:

S—一个元素占用的存储单元个数

LOC(ai)—线性表第i个元素的地址

特点:

实现逻辑上相邻—物理地址相邻

实现随机存取

实现:可用C语言的一维数组实现

12.3.2考点2:线性表的顺序存储结构

线性表的第i个元素的存储位置为:

Loc(ai)=loc(a1)+(i-1)×s

其中,loc(a1)表示第1个数据元素的存储位置,一般被称为线性表的基地址。

12.3.3考点3:线性表的插入和删除操作

线性表的插入操作是指在线性表的第i个元素与第i+1个元素之间插入一个新的数据元素a,使长度为n的线性表

(a1