严蔚敏《数据结构》(C语言版)【教材精讲+考研真题解析】讲义(1-5章)【圣才出品】

合集下载

严蔚敏数据结构题集(C语言版)完整与答案

严蔚敏数据结构题集(C语言版)完整与答案

严蔚敏 数据结构C 语言版答案详解第1章 绪论简述下列术语:数据,数据元素、数据对象、数据结构、存储结构、数据类型和抽象数据类型。

解:数据是对客观事物的符号表示。

在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。

数据元素是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。

,数据对象是性质相同的数据元素的集合,是数据的一个子集。

数据结构是相互之间存在一种或多种特定关系的数据元素的集合。

存储结构是数据结构在计算机中的表示。

数据类型是一个值的集合和定义在这个值集上的一组操作的总称。

抽象数据类型是指一个数学模型以及定义在该模型上的一组操作。

是对一般数据类型的扩展。

}试描述数据结构和抽象数据类型的概念与程序设计语言中数据类型概念的区别。

解:抽象数据类型包含一般数据类型的概念,但含义比一般数据类型更广、更抽象。

一般数据类型由具体语言系统内部定义,直接提供给编程者定义用户数据,因此称它们为预定义数据类型。

抽象数据类型通常由编程者定义,包括定义它所使用的数据和在这些数据上所进行的操作。

在定义抽象数据类型中的数据部分和操作部分时,要求只定义到数据的逻辑结构和操作说明,不考虑数据的存储结构和操作的具体实现,这样抽象层次更高,更能为其他用户提供良好的使用接口。

设有数据结构(D,R),其中{}4,3,2,1d d d d D =,{}r R =,()()(){}4,3,3,2,2,1d d d d d d r =试按图论中图的画法惯例画出其逻辑结构图。

)解:试仿照三元组的抽象数据类型分别写出抽象数据类型复数和有理数的定义(有理数是其分子、分母均为自然数且分母不为零的分数)。

解:ADT Complex{-数据对象:D={r,i|r,i 为实数} 数据关系:R={<r,i>} 基本操作:InitComplex(&C,re,im)操作结果:构造一个复数C ,其实部和虚部分别为re 和im—DestroyCmoplex(&C)操作结果:销毁复数CGet(C,k,&e)操作结果:用e返回复数C的第k元的值Put(&C,k,e)^操作结果:改变复数C的第k元的值为eIsAscending(C)操作结果:如果复数C的两个元素按升序排列,则返回1,否则返回0 IsDescending(C)操作结果:如果复数C的两个元素按降序排列,则返回1,否则返回0)Max(C,&e)操作结果:用e返回复数C的两个元素中值较大的一个Min(C,&e)操作结果:用e返回复数C的两个元素中值较小的一个}ADT Complex^ADT RationalNumber{数据对象:D={s,m|s,m为自然数,且m不为0}数据关系:R={<s,m>}基本操作:}InitRationalNumber(&R,s,m)操作结果:构造一个有理数R,其分子和分母分别为s和mDestroyRationalNumber(&R)操作结果:销毁有理数RGet(R,k,&e)>操作结果:用e返回有理数R的第k元的值Put(&R,k,e)操作结果:改变有理数R的第k元的值为eIsAscending(R)操作结果:若有理数R的两个元素按升序排列,则返回1,否则返回0 \IsDescending(R)操作结果:若有理数R的两个元素按降序排列,则返回1,否则返回0 Max(R,&e)操作结果:用e返回有理数R的两个元素中值较大的一个Min(R,&e):操作结果:用e返回有理数R的两个元素中值较小的一个}ADT RationalNumber试画出与下列程序段等价的框图。

严蔚敏结构题集(C语言版)完整答案

严蔚敏结构题集(C语言版)完整答案

严蔚敏 数据结构C 语言版答案详解第1章 绪论1.1简述下列术语:数据,数据元素、数据对象、数据结构、存储结构、数据类型和抽象数据类型。

解:数据是对客观事物的符号表示。

在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。

b5E2RGbCAP 数据元素是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。

数据对象是性质相同的数据元素的集合,是数据的一个子集。

数据结构是相互之间存在一种或多种特定关系的数据元素的集合。

存储结构是数据结构在计算机中的表示。

数据类型是一个值的集合和定义在这个值集上的一组操作的总称。

抽象数据类型是指一个数学模型以及定义在该模型上的一组操作。

是对一般数据类型的扩展。

1.2 试描述数据结构和抽象数据类型的概念与程序设计语言中数据类型概念的区别。

解:抽象数据类型包含一般数据类型的概念,但含义比一般数据类型更广、更抽象。

一般数据类型由具体语言系统内部定义,直接提供给编程者定义用户数据,因此称它们为预定义数据类型。

抽象数据类型通常由编程者定义,包括定义它所使用的数据和在这些数据上所进行的操作。

在定义抽象数据类型中的数据部分和操作部分时,要求只定义到数据的逻辑结构和操作说明,不考虑数据的存储结构和操作的具体实现,这样抽象层次更高,更能为其他用户提供良好的使用接口。

p1EanqFDPw 1.3 设有数据结构(D,R>,其中{}4,3,2,1d d d d D =,{}r R =,()()(){}4,3,3,2,2,1d d d d d d r = 试按图论中图的画法惯例画出其逻辑结构图。

解:1.4 试仿照三元组的抽象数据类型分别写出抽象数据类型复数和有理数的定义<有理数是其分子、分母均为自然数且分母不为零的分数)。

DXDiTa9E3d 解:ADT Complex{数据对象:D={r,i|r,i 为实数} 数据关系:R={<r,i>} 基本操作: InitComplex(&C,re,im>操作结果:构造一个复数C ,其实部和虚部分别为re 和imDestroyCmoplex(&C>操作结果:销毁复数CGet(C,k,&e>操作结果:用e 返回复数C 的第k 元的值Put(&C,k,e>操作结果:改变复数C的第k元的值为eIsAscending(C>操作结果:如果复数C的两个元素按升序排列,则返回1,否则返回0IsDescending(C>操作结果:如果复数C的两个元素按降序排列,则返回1,否则返回0Max(C,&e>操作结果:用e返回复数C的两个元素中值较大的一个Min(C,&e>操作结果:用e返回复数C的两个元素中值较小的一个}ADT ComplexADT RationalNumber{数据对象:D={s,m|s,m为自然数,且m不为0}数据关系:R={<s,m>}基本操作:InitRationalNumber(&R,s,m>操作结果:构造一个有理数R,其分子和分母分别为s和m DestroyRationalNumber(&R>操作结果:销毁有理数RGet(R,k,&e>操作结果:用e返回有理数R的第k元的值Put(&R,k,e>操作结果:改变有理数R的第k元的值为eIsAscending(R>操作结果:若有理数R的两个元素按升序排列,则返回1,否则返回0IsDescending(R>操作结果:若有理数R的两个元素按降序排列,则返回1,否则返回0Max(R,&e>操作结果:用e返回有理数R的两个元素中值较大的一个Min(R,&e>操作结果:用e返回有理数R的两个元素中值较小的一个}ADT RationalNumber1.5 试画出与下列程序段等价的框图。

严蔚敏《数据结构》(C语言版)教材精讲(栈与队列)【圣才出品】

严蔚敏《数据结构》(C语言版)教材精讲(栈与队列)【圣才出品】
S.bottom=(ElemType *)realloc((S. STACKINCREMENT+STACK_SIZE) *sizeof(ElemType));/* 栈满,追加 存储空间 */
if(! S.bottom) return ERROR;
S.top=S.bottom+S.stacksize; S.stacksize+=STACKINCREMENT; } *S.top=e; S.top++; /* 栈顶指针加 1,e 成为新的栈顶 */ return OK; }
改是按后迕先出的原则迕行的。 进栈(push)
出栈(pop)
top
an ⋯⋯ ai ⋯⋯
图 3-1 顺序栈示意图
2.栈的抽象数据类型定义
ADT Stack {
数据对象:D={ ai|ai∈ElemSet,i=1,2,…,n,n≥0} 数据关系:R={<ai-1,ai>|ai-1,ai∈D,i=2,3,…,n} 基本操作:初始化、进栈、出栈、取栈顶元素等 }ADT Stack
1.栈的动态顺序存储表示 采用动态一维数组来存储栈。所谓动态,指的是栈的大小可以根据需要增加。 ①用 bottom 表示栈底指针,栈底固定丌变的;用 top 表示栈顶指针,栈顶则随着迕 栈和退栈操作而变化。 ②用 top=bottom 作为栈空的标记,每次 top 指向栈顶数组中的下一个存储位置。 ③结点迕栈:首先将数据元素保存到栈顶(top 所指的当前位置),然后执行 top 加 1, 使 top 指向栈顶的下一个存储位置; ④结点出栈:首先执行 top 减 1,使 top 指向栈顶元素的存储位置,然后将栈顶元素 取出。 动态堆栈变化示意图如图 3-2 所示。
基本操作的实现: ①栈的类型定义

严蔚敏《数据结构》(C语言版)笔记和习题(含考研真题)详解

严蔚敏《数据结构》(C语言版)笔记和习题(含考研真题)详解

严蔚敏《数据结构》(C语言版)笔记和习题(含考研真题)详解第1章绪论一、什么是数据结构数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作等的学科。

二、基本概念和术语1数据数据是对客观事物的符号表示,是计算机科学中所有能输入到计算机中并能被计算机程序处理的符号的总称。

2数据元素数据元素是数据的基本单位。

3数据对象数据对象是性质相同的数据元素的集合,是数据的一个子集。

4数据结构数据结构是相互之间存在一种或多种特定关系的数据元素的集合。

(1)数据结构的基本结构根据数据元素之间关系的不同特性,通常有下列四类基本结构:①集合。

数据元素属于“同一个集合”,并无其他复杂关系。

②线性结构。

数据元素之间存在一个对一个的关系。

③树形结构。

数据元素之间存在一个对多个的关系。

④图状结构或网状结构。

数据元素之间存在多个对多个的关系。

【注意】区分这四种基本结构可以根据元素间的对应关系。

如图1-1所示为上述四类基本结构的关系图。

图1-1 四类基本结构的关系图(2)数据结构的形式定义数据结构的形式定义为:Data_Structure=(D,S)其中:D表示数据元素的有限集,S表示D上关系的有限集。

(3)数据结构在计算机中的表示数据结构包括数据元素的表示和关系,在计算机中称为数据的物理结构(又称存储结构)。

其中,关系有两种表示方法:顺序映象和非顺序映象。

这两种表示方法对应两种存储结构:顺序存储结构和链式存储结构。

a.顺序映象:用相对位置来表示数据元素之间的逻辑关系。

b.非顺序映象:用指针表示数据元素之间的逻辑关系。

5数据类型数据类型是一个值的集合和定义在这个值集上的一组操作的总称。

6抽象数据类型抽象数据类型(ADT)由一个值域和定义在该值域上的一组操作组成。

【注意】抽象数据类型是对数据类型架构的一种全局体现,使我们能够更加清晰地看待某一数据类型。

7多形数据类型多形数据类型是指其值的成分不确定的数据类型。

严蔚敏《数据结构》(C语言版)教材精讲(数组和广义表)【圣才出品】

严蔚敏《数据结构》(C语言版)教材精讲(数组和广义表)【圣才出品】


Amn


a10


am
1,0

a01

a11


am1,1

a0,n1

a1,n1



am1,n1


或是一个行向量:αi=(ai0,ai1,…,ai,n-1),其中,0≤i≤m-1
3 / 21
圣才电子书 十万种考研考证电子书、题库视频学习平台

a00
A
a10

am1,0
a01 a11
am1,1
a02 a12
am1,2
a0,n1
a1,n1


am
1,n1

图 5-1 二维数组的表示形式
图 5-2 二维数组顺序存储图例形式 图 5-2 所示,两种顺序存储方式:
数据关系:R={R1,R2,…,Rn},其中 Ri={<aj1…ji…jn,aj1 …ji+1…jn>|0≤jk≤bk-1,1≤k≤n 且 k≠i,0 ≤ji≤bi-2,aj1…ji…jn,aj1…ji+1…jn∈D,i=1,2,…n}
基本操作: ①InitArray(&A,n,bound1,…,boundn) 操作结果:若维数 n 和各维长度合法,则构造相应的数组 A,并返回 OK。 ②DestroyArray(&A) 操作结果:销毁数组 A。 ③Value(A,&e,index1,…,indexn) 初始条件:A 是 n 维数组,e 为元素变量,随后是 n 个下标值。 操作结果:若各下标不超界,则 e 赋值为所指定的 A 的元素值,并返回 OK。 ④Assign(&A,e,index1,…,indexn) 初始条件:A 是 n 维数组,e 为元素变量,随后是 n 个下标值。 操作结果:若下标不超界,则将 e 的值赋给所指定的 A 的元素,并返回 OK。

数据结构C语言版(第2版)严蔚敏人民邮电出版社课后习题答案

数据结构C语言版(第2版)严蔚敏人民邮电出版社课后习题答案

数据结构(C语言版)(第2版)课后习题答案李冬梅2015.3目录第1章绪论 (1)第2章线性表 (5)第3章栈和队列 (13)第4章串、数组和广义表 (26)第5章树和二叉树 (33)第6章图 (43)第7章查找 (54)第8章排序 (65)第1章绪论1.简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。

答案:数据:是客观事物的符号表示,指所有能输入到计算机中并被计算机程序处理的符号的总称。

如数学计算中用到的整数和实数,文本编辑所用到的字符串,多媒体程序处理的图形、图像、声音、动画等通过特殊编码定义后的数据。

数据元素:是数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。

在有些情况下,数据元素也称为元素、结点、记录等。

数据元素用于完整地描述一个对象,如一个学生记录,树中棋盘的一个格局(状态)、图中的一个顶点等。

数据项:是组成数据元素的、有独立含义的、不可分割的最小单位。

例如,学生基本信息表中的学号、姓名、性别等都是数据项。

数据对象:是性质相同的数据元素的集合,是数据的一个子集。

例如:整数数据对象是集合N={0,±1,±2,…},字母字符数据对象是集合C={‘A’,‘B’,…,‘Z’,‘a’,‘b’,…,‘z’},学生基本信息表也可是一个数据对象。

数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。

换句话说,数据结构是带“结构”的数据元素的集合,“结构”就是指数据元素之间存在的关系。

逻辑结构:从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。

因此,数据的逻辑结构可以看作是从具体问题抽象出来的数学模型。

存储结构:数据对象在计算机中的存储表示,也称为物理结构。

抽象数据类型:由用户定义的,表示应用问题的数学模型,以及定义在这个模型上的一组操作的总称。

具体包括三部分:数据对象、数据对象上关系的集合和对数据对象的基本操作的集合。

数据结构严蔚敏(全部章节814张PPT)-(课件)

数据结构严蔚敏(全部章节814张PPT)-(课件)
① 集合:结构中的数据元素除了“同属于一个集合” 外,没有其它关系。
② 线性结构:结构中的数据元素之间存在一对一的 关系。
③ 树型结构:结构中的数据元素之间存在一对多的 关系。
④ 图状结构或网状结构:结构中的数据元素之间存 在多对多的关系。
图1-3 四类基本结构图
1.1.3 数据结构的形式定义
数据结构的形式定义是一个二元组: Data-Structure=(D,S)
计算机求解问题的一般步骤
编写解决实际问题的程序的一般过程:
– 如何用数据形式描述问题?—即由问题抽象出一个 适当的数学模型; – 问题所涉及的数据量大小及数据之间的关系; – 如何在计算机中存储数据及体现数据之间的关系? – 处理问题时需要对数据作何种运算? – 所编写的程序的性能是否良好? 上面所列举的问题基本上由数据结构这门课程来回答。
其中:D是数据元素的有限集,S是D上关系的有限集。 例2:设数据逻辑结构B=(K,R)
K={k1, k2, …, k9} R={ <k1, k3>,<k1, k8>,<k2, k3>,<k2, k4>,<k2, k5>,<k3, k9>, <k5, k6>,<k8, k9>,<k9, k7>,<k4, k7>,<k4, k6> } 画出这逻辑结构的图示,并确定那些是起点,那些是终点
<基本操作名>(<参数表>) 初始条件: <初始条件描述> 操作结果: <操作结果描述>
– 初始条件:描述操作执行之前数据结构和参数应 满足的条件;若不满足,则操作失败,返回相应的出 错信息。

严蔚敏《数据结构》(C语言版)配套题库(章节题库1-6章)【圣才出品】

严蔚敏《数据结构》(C语言版)配套题库(章节题库1-6章)【圣才出品】
2.抽象数据类型的定义仅取决于它的一组(1),而与(2)无关,即不论其内部结构 如何变化,只要它的(3)不变,都不影响其外部使用。
2.计算机算法指的是解决问题的步骤序列,它必须具备( )三个特性。 A.可执行性、可移植性、可扩充性 B.可执行性、确定性、有穷性 C.确定性、有穷性、稳定性 D.易读性、稳定性、安全性 【答案】B 【解析】计算机算法是以一步接一步的方式来详细描述计算机如何将输入转化为所要求 的输出的过程,或者说,算法是对计算机上执行的计算过程的具体描述,也就是解决问题的 步骤序列。一个算法通常需要具备五大特性:有穷性;确定性;可执行性;输入一个算法有 零个或多个输入;输出一个算法有零个或者多个输出。
FOR i:=n-1 DOWNT0 1 DO FOR j:=l TO i DO IF A[ j]>A[ j+1] THEN A[ j]与 A[ j+1]对换;
其中 n 为正整数,则最后一行的语句最坏情况下的时间复杂度是( )。 A.D(n) B.O(nlogn) C.O(n3) D.O(n2) 【答案】D 【解析】这个是冒泡排序,最坏的情况下需要进行 1+2+...+n-1 次交换,即时间复杂 度是 O(n2)。
6.数据结构的抽象操作的定义与具体实现有关。( ) 【答案】× 【解析】数据结构的抽象操作定义取决于客观存在的一组逻辑特性,与其在计算机内具 体表示和实现无关。
7.顺序存储方式的优点是存储密度大,且插入、删除运算效率高。( ) 【答案】× 【解析】前者正确,后者错误。顺序存储方式在插入、删除元素时需要挪动大量的元素, 执行效率较低。
3.以下说法错误的是( )。 (1)算法原地工作的含义是指不需要任何额外的辅助空间 (2)在相同的规模 n 下,复杂度 O(n)的算法在时间上总是优于复杂度 O(2n)的 算法

严蔚敏数据结构课后习题及答案解析

严蔚敏数据结构课后习题及答案解析

严蔚敏数据结构课后习题及答案解析第一章绪论一、选择题1.组成数据的基本单位是()(A)数据项(B)数据类型(C)数据元素(D)数据变量2.数据结构是研究数据的()以及它们之间的相互关系。

(A)理想结构,物理结构(B)理想结构,抽象结构(C)物理结构,逻辑结构(D)抽象结构,逻辑结构3.在数据结构中,从逻辑上可以把数据结构分成()(A)动态结构和静态结构(B)紧凑结构和非紧凑结构(C)线性结构和非线性结构(D)内部结构和外部结构4.数据结构是一门研究非数值计算的程序设计问题中计算机的(①)以及它们之间的(②)和运算等的学科。

①(A)数据元素(B)计算方法(C)逻辑存储(D)数据映像②(A)结构(B)关系(C)运算(D)算法5.算法分析的目的是()。

(A)找出数据结构的合理性(B)研究算法中的输入和输出的关系(C)分析算法的效率以求改进(D)分析算法的易懂性和文档性6.计算机算法指的是(①),它必须具备输入、输出和(②)等5个特性。

①(A)计算方法(B)排序方法(C)解决问题的有限运算序列(D)调度方法②(A)可执行性、可移植性和可扩充性(B)可行性、确定性和有穷性(C)确定性、有穷性和稳定性(D)易读性、稳定性和安全性二、判断题1.数据的机内表示称为数据的存储结构。

()2.算法就是程序。

()3.数据元素是数据的最小单位。

()4.算法的五个特性为:有穷性、输入、输出、完成性和确定性。

()5.算法的时间复杂度取决于问题的规模和待处理数据的初态。

()三、填空题1.数据逻辑结构包括________、________、_________ 和_________四种类型,其中树形结构和图形结构合称为_____。

2.在线性结构中,第一个结点____前驱结点,其余每个结点有且只有______个前驱结点;最后一个结点______后续结点,其余每个结点有且只有_______个后续结点。

3.在树形结构中,树根结点没有_______结点,其余每个结点有且只有_______个前驱结点;叶子结点没有________结点,其余每个结点的后续结点可以_________。

数据结构c语言版严蔚敏课后习题答案

数据结构c语言版严蔚敏课后习题答案

数据结构c语言版严蔚敏课后习题答案数据结构是计算机科学中非常重要的一门学科,它研究的是数据的组织、存储和管理方式。

而C语言作为一种广泛应用于系统编程和嵌入式开发的高级编程语言,与数据结构的学习息息相关。

本文将针对《数据结构(C语言版)》严蔚敏教材的课后习题提供一些答案,希望能够帮助读者更好地理解和掌握数据结构。

第一章:绪论在第一章中,主要介绍了数据结构的基本概念和基本术语。

课后习题主要是一些概念性的问题,例如数据结构与算法的关系、数据的逻辑结构和物理结构等。

这些问题的答案可以通过仔细阅读教材中的相关内容来得到。

第二章:线性表线性表是数据结构中最基本、最常用的一种结构。

课后习题主要涉及线性表的基本操作,如插入、删除、查找等。

这些问题的答案可以通过编写相应的C语言代码来实现。

第三章:栈和队列栈和队列是线性表的特殊形式,具有后进先出(LIFO)和先进先出(FIFO)的特点。

课后习题主要涉及栈和队列的基本操作,如进栈、出栈、入队、出队等。

这些问题的答案同样可以通过编写相应的C语言代码来实现。

第四章:串串是由零个或多个字符组成的有限序列,是一种特殊的线性表。

课后习题主要涉及串的模式匹配、串的替换等操作。

这些问题的答案可以通过使用C语言的字符串处理函数来实现。

第五章:数组和广义表数组是一种线性表的顺序存储结构,广义表是线性表的扩展。

课后习题主要涉及数组和广义表的创建、访问和操作等。

这些问题的答案可以通过编写相应的C语言代码来实现。

第六章:树树是一种非线性的数据结构,具有层次关系。

课后习题主要涉及树的遍历、节点的插入和删除等操作。

这些问题的答案可以通过使用C语言的指针和递归来实现。

第七章:图图是一种非线性的数据结构,由节点和边组成。

课后习题主要涉及图的遍历、最短路径、最小生成树等操作。

这些问题的答案可以通过使用C语言的图算法来实现。

通过以上的简要介绍,读者可以了解到《数据结构(C语言版)》严蔚敏教材的课后习题主要涵盖了线性表、栈和队列、串、数组和广义表、树、图等各个方面。

数据结构(C语言版第2版)课后习题答案严蔚敏版

数据结构(C语言版第2版)课后习题答案严蔚敏版

数据结构(C语⾔版第2版)课后习题答案严蔚敏版数据结构(C语⾔版 第2版)课后习题答案 严蔚敏 等 编著,仅供参考,还是⾃⼰认真做了再看第1章 绪论5.选择题(1)在数据结构中,从逻辑上可以把数据结构分成( C )。

A.动态结构和静态结构 B.紧凑结构和⾮紧凑结构C.线性结构和⾮线性结构 D.内部结构和外部结构(2)与数据元素本⾝的形式、内容、相对位置、个数⽆关的是数据的( C )。

A.存储结构 B.存储实现C.逻辑结构 D.运算实现(3)通常要求同⼀逻辑结构中的所有数据元素具有相同的特性,这意味着( B )。

A.数据具有同⼀特点B.不仅数据元素所包含的数据项的个数要相同,⽽且对应数据项的类型要⼀致C.每个数据元素都⼀样D.数据元素所包含的数据项的个数要相等(4)以下说法正确的是( D )。

A.数据元素是数据的最⼩单位B.数据项是数据的基本单位C.数据结构是带有结构的各数据项的集合D.⼀些表⾯上很不相同的数据可以有相同的逻辑结构解释:数据元素是数据的基本单位,数据项是数据的最⼩单位,数据结构是带有结构的各数据元素的集合。

(5)算法的时间复杂度取决于( D )。

A.问题的规模 B.待处理数据的初态C.计算机的配置 D.A和B解释:算法的时间复杂度不仅与问题的规模有关,还与问题的其他因素有关。

如某些排序的算法,其执⾏时间与待排序记录的初始状态有关。

为此,有时会对算法有最好、最坏以及平均时间复杂度的评价。

(6)以下数据结构中,( A )是⾮线性数据结构A.树 B.字符串 C.队列 D.栈6.试分析下⾯各程序段的时间复杂度。

(1)x=90; y=100;while(y>0)if(x>100){x=x-10;y--;}else x++;答案:O(1)解释:程序的执⾏次数为常数阶。

(2)for (i=0; i<n; i++)for (j=0; j<m; j++)a[i][j]=0;答案:O(m*n)解释:语句a[i][j]=0;的执⾏次数为m*n。

数据结构C语言版(严蔚敏) 教材讲义

数据结构C语言版(严蔚敏) 教材讲义

一般情况下,算法中基本操作重复执行的 次数是问题规模n的某个函数,算法的时 间量度记作 T(n)=O(f(n)) 称作算法的渐近时间复杂度。 例1、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]+=a[I][k]*b[k][j];


2.1 线性表的逻辑结构

线性表(Linear List) :由n(n≧)个数据元素(结 点)a1,a2, …an组成的有限序列。其中数据元 素的个数n定义为表的长度。当n=0时称为空表, 常常将非空的线性表(n>0)记作: (a1,a2,…an) 这里的数据元素ai(1≦i≦n)只是一个抽象的符 号,其具体含义在不同的情况下可以不同。 例1、26个英文字母组成的字母表 (A,B,C、…、Z) 例2、某校从1978年到1983年各种型号的计算 机拥有量的变化情况。 (6,17,28,50,92,188)




有的情况下,算法中基本操作重复执行的次数 还随问题的输入数据集不同而不同。例如: Void bubble-sort(int a[],int n) for(I=n-1;change=TURE;I>1 && change;--I) { change=false; for(j=0;j<I;++j) if (a[j]>a[j+1]) { a[j] ←→a[j+1]; change=TURE} } 最好情况:0次

Leabharlann 例4、for(I=1;I<=n;++I) for(j=1;j<=n;++j) {++x;s+=x;} 语句频度为:2n2 其时间复杂度为:O(n2) 即时间复杂度为平方阶。 定理:若A(n)=a m n m +a m-1 n m-1 +…+a1n+a0是 一个m次多项式,则A(n)=O(n m) 证略。 例5for(i=2;i<=n;++I) for(j=2;j<=i-1;++j) {++x;a[i,j]=x;}

严蔚敏《数据结构》考研C语言版考研笔记与考研真题

严蔚敏《数据结构》考研C语言版考研笔记与考研真题

严蔚敏《数据结构》考研C语言版考研笔记与考研真题第一部分考研真题精选一、单项选择题1若元素a,b,c,d,e,f依次进栈,允许进栈、退栈操作交替进行,但不允许连续三次进行退栈操作,则不可能得到的出栈序列是()。

[计算机统考(408)2010年研]【答案】D查看答案【解析】4个选项所给序列的进、出栈操作序列分别为:选项A:Push,Push,Push,Push,Pop,Pop,Push,Pop,Pop,Push,Pop,Pop选项B:Push,Push,Push,Pop,Pop,Push,Pop,Pop,Push,Pop,Push,Pop选项C:Push,Push,Pop,Push,Pop,Pop,Push,Push,Pop,Push,Pop,Pop选项D:Push,Pop,Push,Push,Push,Push,Push,Pop,Pop,Pop,Pop,Pop按照题目要求,不允许连续三次进行退栈操作,所以选项D所给序列为不可能得到的出栈顺序。

2若一棵二叉树的前序遍历序列为a,e,b,d,c,后序遍历序列为b,c,d,e,a,则根结点的孩子结点()。

[计算机统考(408)2012年研]A.只有eB.有e、bC.有e、cD.无法确定【答案】A查看答案【解析】由题目可知,若一棵二叉树的前序遍历序列为a,e,b,d,c,后序遍历序列为b,c,d,e,a,其中a为这棵二叉树的根结点,接下来,在前序遍历的第二个结点为e,而后序遍历的倒数第二个结点为e,说明a的孩子结点只有e。

3循环队列放在一维数组A[0..M-1]中,end1指向队头元素,end2指向队尾元素的后一个位置。

假设队列两端均可进行入队和出队操作,队列中最多能容纳M-1个元素。

初始时为空,下列判断队空和队满的条件中,正确的是()。

[计算机统考(408)2014年研]A.队空:end1==end2;队满:end1==(end2+1)mod MB.队空:end1==end2;队满:end2==(end1+1)mod (M-1)C.队空:end2==(end1+1)mod M;队满:end1==(end2+1)mod M D.队空:end1==(end2+1)mod M;队满:end2==(end1+1)mod (M -1)【答案】A查看答案【解析】在循环队列中,在少用一个元素空间的前提下,可约定入队前,测试尾指针在循环意义下加1后是否等于头指针,若相等,则队满。

严蔚敏数据结构(C语言版)知识点总结笔记课后答案

严蔚敏数据结构(C语言版)知识点总结笔记课后答案

严蔚敏数据结构(C语⾔版)知识点总结笔记课后答案第1章绪论1.1复习笔记⼀、数据结构的定义数据结构是⼀门研究⾮数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作等的学科。

⼆、基本概念和术语数据数据(data)是对客观事物的符号表⽰,在计算机科学中是指所有能输⼊到计算机中并被计算机程序处理的符号的总称,它是计算机程序加⼯的“原料”。

2.数据元素数据元素(data element)是数据的基本单位,在计算机程序中通常作为⼀个整体进⾏考虑和处理。

3.数据对象数据对象(data object)是性质相同的数据元素的集合,是数据的⼀个⼦集。

4.数据结构数据结构(data structure)是相互之间存在⼀种或多种特定关系的数据元素的集合。

(1)数据结构的基本结构根据数据元素之间关系的不同特性,通常有下列四类基本结构:①集合。

数据元素之间除了“同属于⼀个集合”的关系外,别⽆其它关系。

②线性结构。

数据元素之间存在⼀个对⼀个的关系。

③树形结构。

数据元素之间存在⼀个对多个的关系。

④图状结构或⽹状结构。

数据元素之间存在多个对多个的关系。

如图1-1所⽰为上述四类基本结构的关系图。

图1-1 四类基本结构的关系图(2)数据结构的形式定义数据结构的形式定义为:数据结构是⼀个⼆元组Data_Structure==(D,S)其中:D表⽰数据元素的有限集,S表⽰D上关系的有限集。

(3)数据结构在计算机中的表⽰数据结构在计算机中的表⽰(⼜称映象)称为数据的物理结构,⼜称存储结构。

它包括数据元素的表⽰和关系的表⽰。

①元素的表⽰。

计算机数据元素⽤⼀个由若⼲位组合起来形成的⼀个位串表⽰。

②关系的表⽰。

计算机中数据元素之间的关系有两种不同的表⽰⽅法:顺序映象和⾮顺序映象。

并由这两种不同的表⽰⽅法得到两种不同的存储结构:顺序存储结构和链式存储结构。

a.顺序映象的特点是借助元素在存储器中的相对位置来表⽰数据元素之间的逻辑关系。

青岛科技大学 数据结构 C语言版 严蔚敏 清华大学出版社 讲义

青岛科技大学 数据结构 C语言版 严蔚敏 清华大学出版社 讲义

JYP
13
1.3 算法定义
数据结构的操作实际上是以算法的形式实现的。
定义:算法是一个有限的指令集合,执行这些指令 可以完成某一特定任务。一个算法还应当满足以下 特性: 输入 零个或多个由外界提供的输入量。 输出 至少产生一个输出量。 确定性 每一指令都有确切的语义,无歧义。 有限性 在执行有限步骤后结束。 有效性 每一条指令都应能经过有限层的表示转 化为计算平台的基本指令,即算法的指令必须是可 行的。
class Circle { // 对象: 几何圆 public: Circle(float r); // 构造函数,创建一个半径为r的对象实例 float Circumference( ); // 返回该实例的周长 float Area( ); // 返回该实例的面积 };
该抽象数据类型的名称为Circle,数据对象定义 为几何圆,操作包括构造函数、计算周长和面积等。 注意:这些定义不依赖于数据对象的具体表示,也 没有给出操作实现的过程。
• 中间层数据结构起着核心作用,称之为建模层。 • 对数据结构的研究产生了一批通用性强、具有很 高实用价值的中间层数据结构,如数组、字符串、 集合、线性表、栈、队列、链表、树、图、符号 表等。
• 系统地学习进而掌握数据结构的知识和方法,对 于提高设计与开发软件系统尤其是复杂软件系统 的能力,无疑是十分重要的。
JYP
7
• 用抽象数据类型(ADT)描述数据抽象与封装是 一种自然、有效的方法。 • 数据类型由一个数据对象的集合和一组作用于这 些数据对象的操作组成。例如,C++的基本数据 类型char、int、float和double等。
• 抽象数据类型是一个数据类型,该数据类型的组 织遵循将数据对象及对这些数据对象的操作的规 格说明与这些数据对象的表示、操作的实现相分 离的原则。

严蔚敏《数据结构》(C语言版)教材精讲(绪 论)【圣才出品】

严蔚敏《数据结构》(C语言版)教材精讲(绪 论)【圣才出品】
ADT 的形式化定义是三元组:ADT=(D,S,P),其中,D 是数据对象,S 是 D 上的 关系集,P 是对 D 的基本操作集。
ADT 的一般定义形式是: ADT 抽象数据类型名 {
数据对象:<数据对象的定义> 数据关系:<数据关系的定义> 基本操作:<基本操作的定义> }ADT 抽象数据类型名
4 / 11
二、数据结构的形式定义 数据结构的形式定义是一个二元组:Data_Structure=(D,S),其中,D 是数据元素 的有限集,S 是 D 上关系的有限集。 数据元素之间的关系可以是元素之间代表某种含义的自然关系,也可以是为处理问题方 便而人为定义的关系,返种自然或人为定义的“关系”称为数据元素之间的逡辑关系,相应 的结构称为逡辑结构。
1.3 抽象数据类型的表示与实现
抽象数据类型(Abstract Data Type,简称 ADT):是指一个数学模型以及定义在该模 型上的一组操作。
ADT 的定义仅取决亍它的一组逡辑特性,不其在计算机内的表示和实现无关。因此, 丌论 ADT 的内部结构如何变化,只要其数学特性丌变,都丌影响其外部使用。
圣才电子书 十万种考研考证电子书、题库视频学习平台

其中数据对象和数据关系的定义用伪码描述。 基本操作的定义格式是: 基本操作名(参数表)
初始条件:<初始条件描述> 操作结果:<操作结果描述> 其中,初始条件描述的是操作执行之前数据结构和参数应满足的条件;若丌满足,则操 作失败,迒回相应的出错信息;操作结果描述的是操作正常完成之后,数据结构的变化状况 和应迒回的结果;若初始条件为穸,则省略之。
圣才电子书 十万种考研考证电子书、题库视频学习平台
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
三、数据结构的存储方式 存储结构:数据结构在计算机中的表示(又称映像),包括数据元素的表示和关系的表 示。 元素的关系的表示方法: ①顺序映像的特点,用数据元素在存储器中的相对位置来表示数据元素之间的逻辑结构 (关系)。 ②非顺序映像的特点,借助指示元素存储地址的的指针(pointer)来表示数据元素之间 的逻辑结构(关系)。
二、数据结构的形式定义 数据结构的形式定义是一个二元组:Data_Structure=(D,S),其中,D 是数据元素的 有限集,S 是 D 上关系的有限集。 数据元素之间的关系可以是元素之间代表某种含义的自然关系,也可以是为处理问题方 便而人为定义的关系,这种自然或人为定义的“关系”称为数据元素之间的逻辑关系,相应 的结构称为逻辑结构。
2 / 98
圣才电子书 十万种考研考证电子书、题库视频学习平台

对应两种存储结构: ①顺序存储结构,数据元素存放的地址是连续的; ②链式存储结构,数据元素存放的地址是否连续没有要求。 数据结构的三个组成部分: ①逻辑结构,数据元素之间逻辑关系的描述 D_S=(D,S)。 ②存储结构,数据元素在计算机中的存储及其逻辑关系的表现称为数据的存储结构或物 理结构。 ③数据操作,对数据要进行的运算。 数据的逻辑结构和物理结构是密不可分的两个方面,一个算法的设计取决于所选定的逻 辑结构,而算法的实现依赖于所采用的存储结构。
四、数据类型 数据类型(Data Type):指的是一个值的集合和定义在该值集上的一组操作的总称。 数据类型是和数据结构密切相关的一个概念。在 C 语言中数据类型有:基本类型、指 针类型、空类型和构造类型。 数据结构不同于数据类型,也不同于数据对象,它不仅要描述数据类型的数据对象,而 且要描述数据对象各元素之间的相互关系。
五、数据结构的运算 数据结构的主要运算包括: (1)建立(Create)一个数据结构; (2)消除(Destroy)一个数据结构; (3)从一个数据结构中删除(Delete)一个数据元素;
3 / 98
圣才电子书 十万种考研考证电子书、题库视频学习平台

(4)把一个数据元素插入(Insert)到一个数据结构中; (5)对一个数据结构进行访问(Access); (6)对一个数据结构(中的数据元素)进行修改(Modify); (7)对一个数据结构进行排序(Sort); (8)对一个数据结构进行查找(Search)。
1.3 抽象数据类型的表示与实现
抽象数据类型(Abstract Data Type,简称 ADT):是指一个数学模型以及定义在该模型 上的一组操作。
ADT 的定义仅取决于它的一组逻辑特性,与其在计算机内的表示和实现无关。因此, 不论 ADT 的内部结构如何变化,只要其数学特性不变,都不影响其外部使用。
ADT 的形式化定义是三元组:ADT=(D,S,P),其中,D 是数据对象,S 是 D 上的 关系集,P 是对 D 的基本操作集。
ADT 的一般定义形式是:
4 / 98
圣才电子书 十万种考研考证电子书、题库视频学习平台

其中数据对象和数据关系的定义用伪码描述。 基本操作的定义格式是: 其中,初始条件描述的是操作执行之前数据结构和参数应满足的条件;若不满足,则操 作失败,返回相应的出错信息;操作结果描述的是操作正常完成之后,数据结构的变化状况 和应返回的结果;若初始条件为空,则省略之。
1 / 98
圣才电子书 十万种考研考证电子书、题库视频学习平台

数据结构(Data Structure):是指相互之间存在一种或多种特定关系的数据元 素的集合。
结构:元素之间的相互联系(关系)。四种基本类型: ①集合:结构中的数据元素除了“同属于一个集合”的关系外,没有其他关系; ②线性结构:结构中的数据元素之间存在一对一的关系; ③树形结构:结构中的数据元素之间存在一对多的关系; ④图状结构或网状结构:结构中的数据元素之间存在多对多的关系。
1.4 算法与算法分析
一、算法 算法(Algorithm):是对特定问题求解方法(步骤)的一种描述,是指令的有限序列, 其中每一条指令表示一个或多个操作。 算法具有以下五个特性:
5 / 98
圣才电子书 十万种考研考证电子书、题库视频学习平台

①有穷性:一个算法必须总是在执行有穷步之后结束,且每一步都在有穷时 间内完成。
②确定性:算法中每一条指令必须有确切的含义,不能存在二义性。且在任何条件下, 算法只有唯一的一条执行路径,即对于相同的输入只能得出相同的输出。
③可行性:一个算法是能行的。即算法描述的操作都可以通过已经实现的基本运算执行 有限次来实现。
④输入:一个算法有零个或多个输入,这些输入取自于某个特定的对象集合。 ⑤输出:一个算法有一个或多个输出,这些输出是同输入有着某些特定关系的量。 一个算法可以用多种方法描述,主要有:使用自然语言描述;使用形式语言描述;使用 计算机程序设计语言描述。 算法和程序是两个不同的概念。一个计算机程序是对一个算法使用某种程序设计语言的 具体实现。算法具有有穷性,程序可以在无限循环中执行,这意味着不是所有的计算机程序 都是算法。
圣才电子书 十万种考研考证电子书、题库视频学习平台

第 1 章 绪 论[视频讲解] 1.1 什么是数据结构 数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的 关系和操作等的学科。 1.2 基本概念和术语
一、基本概念和术语 数据(Data):是对客观事物的符号表示。在计算机科学中指的是所有能输入到计算机 中并被计算机程序处理的符号的总称。 数据元素(Data Element):是数据的基本单位,在程序中通常作为一个整体来进行考虑 和处理。 一个数据元素可由若干个数据项(Data Item)组成。数据项是数据的不可分割的最小单 位。数据项是对客观事物某一方面特性的数据描述。 数据对,是数据的一个子集。如字符 集合 C={‘A’,‘B’,…,‘Z’}。
相关文档
最新文档