中国教材与国外教材差异分析及数据结构学习心得分享
前段时间,我看到了一篇文章,这篇文章是在批判中国教材的。它声称国内的教材是粗制滥造的,仅仅是为了获得一些奖项和荣誉。然而,国外的教材却细致入微,生怕学生看不懂。我并不否认这种观点,但是,我认为我们应该更加努力地学习,去改变这些不足之处。最近在研习数据结构,这是耿国华老师主编的《数据结构--用 c 语言描述》一书的第三版。学完之后,原本打算做做课后题,核对一下答案,然而却找不到教材的答案,找到的一些答案好像还是旧版本的,内容存在差异。索性一想,既然自己在学习,那就把内容写成博客吧,于是就有了这篇博客。

1.简述下列术语或概念 (1)数据结构
数据结构指的是数据元素集合,这些数据元素之间存在一种或多种特定关系。数据结构包含数据元素集合以及元素间关系的集合,也就是数据的组织形式。
数据结构存在四个基本的逻辑结构;同时还有数据结构的物理结构。
它被称作数据的存储结构,是逻辑结构在计算机里的存储映像。其主要分为两种,分别是顺序存储结构和非顺序存储结构。同时,它还可进一步分为顺序存储、链式存储、索引存储、散列存储。
(4)数据类型
数据类型包含一组相同的值集合以及定义在这个值集合上的一组操作。它分为原子类型,原子类型是值不可再分的数据类型;结构类型,结构类型是值可分解为若干成分的数据类型;抽象数据类型,抽象数据类型是一个数学模型及定义在该数学模型上的一组操作。
(5)线性结构与非线性结构的差别
线性结构中,数据元素之间存在着一一对应的关系。除了第一个元素和最后一个元素外,其余元素都有一个直接前驱和一个直接后继。非线性结构中,数据元素之间存在着一对多或多对多的关系。线性结构包括线性表、栈、队列、串、数组、广义表。非线性结构有树、图。
(6)抽象数据类型
抽象数据类型定义了一个数据对象,该数据对象中各元素间存在结构关系,同时还定义了一组处理数据的操作。
抽象数据类型的两个特点:数据抽象与信息隐藏。
抽象数据类型具有这样的特征:它将使用与实现分离开来,并且实现部分能够做到封装以及信息隐藏。同时,抽象数据类型的定义本身是独立于其具体实现的。
(7)数据结构的形式化定义、数据结构两个构成要素的含义
ADT
{
数据对象:<数据对象的定义>
结构关系:<结构关系的定义>
基本操作:<基本操作的定义>
}ADT
算法具有一些特性,同时也有相应的设计要求。
算法的特性:
输入输出有限型可行性准确性
设计要求:
可读性正确性健壮性高效性和低存储量 (9)算法的时间复杂度
算法的执行时间就是算法中所有语句执行时间的总和。语句的执行会受到编译程序以及计算机软硬件环境的影响。所以会用算法中基本操作重复执行的频度当作度量标准,并且记为 T(n) = O(f(n))。
选择题:设某数据结构的二元组形式表示为 A = {D, R},D = {1, 2, 3, 4, 5, 6, 7, 8, 9},R = {r},r = {,,,,,,,},那么数据结构 A 是(B)。
A 是一种具有线性特征的结构;B 呈现出树形的形态;C 指的是物理方面的结构;D 属于图的结构。
(2)数据的最小单位(A)
A.数据项B.数据类型C.数据元素D.数据变量
若要利用形式参数直接访问并修改实参值,那么就应该将形参说明为(A)参数。
A.指针B.值参数C.数值D.整型
(4)下列程序的时间复杂度为(A)
i=0;
s=0;
while(s
A.O(
)B.O(
)C.O(
)D.O(
解析:
并且这个和要大于等于 n 。
s =
>=n
则O(n)=
(5)执行下面程序时,语句s的执行次数为()
for(i=0;i<=n;i++)
for(j=0;j<=i;j++)
S
A.O(
)B.O(
)C.O(
)D.O(
3.计算下列程序段中x=x+1的语句频度
for(i=1;i<=n;i++)
for(j=1;j<=i;j++)
for(k=1;k<=j;k++)
x=x+1
解析:
i=1时,语句执行1次
i=2时,语句执行1+2=3次
......
i=n时,语句执行1+2+...+n=
次
则计算an=
的前n项和Sn
Sn =
4.编写算法,求一元多项式
确定算法中每一个语句的执行次数,以及整个算法的时间复杂度,要求时间复杂度尽可能小,且算法中不能使用求幂函数,同时要确定的值。需注意,本题的输入为 。
(i=0,1,2...,n)、x和n,输出为
通常算法的输入和输出可以采用以下两种方式:一种是通过参数表中的参数进行显示传递;另一种是通过全局变量进行隐式传递。
函数 func 会依据数组 a 的元素个数 n 以及给定的双精度数 x 来执行特定的功能。
int i;
double xtemp=1;
double psum=0;
for(i=0;i
尾记:如有错误,望指正,我会及时修改