数据结构(C语言版)(严蔚敏)

合集下载

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

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

数据结构(C语言版)(第2版)课后习题答案李冬梅2015.3目录第1章绪论...................................................................................... 错误!未定义书签。

第2章线性表 .................................................................................. 错误!未定义书签。

第3章栈和队列 .............................................................................. 错误!未定义书签。

第4章串、数组和广义表 ............................................................... 错误!未定义书签。

第5章树和二叉树........................................................................... 错误!未定义书签。

第6章图............................................................................................ 错误!未定义书签。

第7章查找...................................................................................... 错误!未定义书签。

第8章排序...................................................................................... 错误!未定义书签。

数据结构(C语言版)第2版习题答案解析-严蔚敏

数据结构(C语言版)第2版习题答案解析-严蔚敏

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

严蔚敏《数据结构》(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语言版严蔚敏习题答案

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

而C语言是一种被广泛应用于系统编程和嵌入式开发的编程语言。

在学习数据结构的过程中,很多人会选择使用严蔚敏编写的《数据结构(C语言版)》一书。

本文将针对该书中的习题,为大家提供一些答案和解析。

1. 顺序表顺序表是一种使用连续的内存空间来存储数据的数据结构。

在《数据结构(C语言版)》一书中,我们可以通过使用结构体来实现顺序表。

下面是一个示例代码:```c#include <stdio.h>#include <stdlib.h>#define MAXSIZE 100typedef struct {int data[MAXSIZE];int length;} SqList;void InitList(SqList *L) {L->length = 0;}void Insert(SqList *L, int pos, int value) {if (L->length >= MAXSIZE) {printf("顺序表已满,无法插入!"); return;}if (pos < 1 || pos > L->length + 1) { printf("插入位置非法!");return;}for (int i = L->length; i >= pos; i--) { L->data[i] = L->data[i - 1];}L->data[pos - 1] = value;L->length++;}void Delete(SqList *L, int pos) {if (pos < 1 || pos > L->length) {printf("删除位置非法!");return;}for (int i = pos - 1; i < L->length - 1; i++) { L->data[i] = L->data[i + 1];}L->length--;}int main() {SqList L;InitList(&L);Insert(&L, 1, 10);Insert(&L, 2, 20);Insert(&L, 3, 30);Delete(&L, 2);for (int i = 0; i < L.length; i++) {printf("%d ", L.data[i]);}return 0;}2. 链表链表是一种使用非连续的内存空间来存储数据的数据结构。

哈工大-数据结构课件-严蔚敏《数据结构》(C语言版)

哈工大-数据结构课件-严蔚敏《数据结构》(C语言版)

④ 程序中指令重复执行的次数。
[定义] 语句频度:语句重复执行的次数
1.4 算法与算法分析
第1章 绪论
描述算法的书写规则
所有算法均以函数形式给出, 算法的输入数据来自参数表; 参数表的参数在算法之前均进行类型说明;
有关结点结构的类型定义,以及全局变量的说明等均在算法之
前进行说明
评价算法标准
关系;
1.3 抽象数据类型的表示与实现
第1章 绪论
抽象数据型的实现
抽象描述 →(高级语言)编写的程序
三条原则:
①符合规格描述的定义; ②有尽可能好的通用性; ③尽可能独立于程序的其它部分
多层次抽象技术
自底向上与自顶向下相结合、由简单到复杂
1.3 抽象数据类型的表示与实现
抽象数据类型的形式描述
1.2 基本概念和术语
第1章 绪论
算法:数据运算的描述
数据结构:数据的逻辑结构和存储结构
算法+数据结构=程序
1.1 数据结构及其讨论范畴 1.2 基本概念和术语 1.3 抽象数据类型的表示与实现 1.4 算法和算法分析
1.3 抽象数据类型的表示与实现
第1章 绪论
抽象数据型Abstract Data Types(ADT) [定义]:抽象数据型是一个数学模型和在该模型 上定义的操作的集合
1.1 数据结构及其讨论范畴
第1章 绪论
数据结构是一门讨论"描述现实世界实体的数 学模型(非数值计算)及其上的操作在计算机中如何 表示和实现"的学科。 ① 在解决问题时可能遇到的典型的逻辑结构 (数据结构) ② 逻辑结构的存储映象(存储实现) ③ 数据结构的相关操作及其实现。
1.1 数据结构及其讨论范畴 例

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

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

数据结构c语言版严蔚敏课后习题答案数据结构是计算机科学中的一个重要领域,它涉及到数据的组织、管理和存储方式,以便可以高效地访问和修改数据。

C语言作为一种广泛使用的编程语言,提供了丰富的数据结构实现方法。

严蔚敏教授编写的《数据结构(C语言版)》是许多计算机专业学生的必读教材。

以下是对该书课后习题的一些参考答案,供学习者参考。

第一章:绪论1. 数据结构的定义:数据结构是计算机中存储、组织数据的方式,它不仅包括数据元素的类型和关系,还包括数据操作的函数。

2. 数据结构的重要性:数据结构对于提高程序的效率至关重要。

合理的数据结构可以减少算法的时间复杂度和空间复杂度。

第二章:线性表1. 线性表的定义:线性表是由n个元素组成的有限序列,其中n称为线性表的长度。

2. 线性表的顺序存储结构:使用数组来存储线性表的元素,元素的存储关系是连续的。

3. 线性表的链式存储结构:使用链表来存储线性表的元素,每个元素包含数据部分和指向下一个元素的指针。

第三章:栈和队列1. 栈的定义:栈是一种特殊的线性表,只能在一端(栈顶)进行插入和删除操作。

2. 队列的定义:队列是一种特殊的线性表,允许在一端(队尾)进行插入操作,在另一端(队首)进行删除操作。

第四章:串1. 串的定义:串是由零个或多个字符组成的有限序列。

2. 串的存储结构:串可以采用顺序存储结构或链式存储结构。

第五章:数组和广义表1. 数组的定义:数组是由具有相同类型的多个元素组成的集合,这些元素按照索引顺序排列。

2. 广义表的定义:广义表是线性表的推广,其中的元素可以是数据也可以是子表。

第六章:树和二叉树1. 树的定义:树是由节点组成的,其中有一个特定的节点称为根,其余每个节点有且仅有一个父节点。

2. 二叉树的定义:二叉树是每个节点最多有两个子节点的树。

第七章:图1. 图的定义:图是由顶点和边组成的数据结构,可以表示复杂的关系。

2. 图的存储结构:图可以用邻接矩阵或邻接表来存储。

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

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

数据结构(C语言版)严蔚敏课后习题答案数据结构(C语言版)严蔚敏课后习题答案一、线性表1. 顺序表顺序表是一种存储结构,它将元素顺序存放在一块连续的存储区域中。

C语言中常用数组来实现顺序表。

以下是一些常见题目的解答:题目1:已知顺序表中存储了n个整数,请编写一个算法,将这个顺序表中的所有负数挑选出来,并将它们按照原有顺序存放在新的顺序表中。

解答:```#include <stdio.h>#define MAX_SIZE 100int main() {int A[MAX_SIZE], neg[MAX_SIZE];int n, i, j = 0;printf("Enter the number of elements: ");scanf("%d", &n);printf("Enter the elements: ");for (i = 0; i < n; i++) {scanf("%d", &A[i]);if (A[i] < 0) {neg[j] = A[i];j++;}}printf("Negative numbers: ");for (i = 0; i < j; i++) {printf("%d ", neg[i]);}return 0;}```题目2:假设顺序表A和B中的元素递增有序排列,编写一个算法合并这两个顺序表,并使合并后的顺序表仍然递增有序。

解答:```#include <stdio.h>#define MAX_SIZE 100int main() {int A[MAX_SIZE], B[MAX_SIZE], C[MAX_SIZE * 2]; int m, n, i, j, k;printf("Enter the number of elements in the first list: "); scanf("%d", &m);printf("Enter the elements in increasing order: ");for (i = 0; i < m; i++) {scanf("%d", &A[i]);C[i] = A[i];}printf("Enter the number of elements in the second list: "); scanf("%d", &n);printf("Enter the elements in increasing order: ");for (i = 0; i < n; i++) {scanf("%d", &B[i]);C[m + i] = B[i];}// Merge A and B into Ci = j = k = 0;while (i < m && j < n) { if (A[i] < B[j]) {C[k] = A[i];i++;} else {C[k] = B[j];j++;}k++;}while (i < m) {C[k] = A[i];i++;k++;}while (j < n) {C[k] = B[j];j++;k++;}printf("Merged list in increasing order: ");for (i = 0; i < m + n; i++) {printf("%d ", C[i]);}return 0;}```2. 链表链表是一种动态的数据结构,它通过结点之间的指针联系起来。

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

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

数据结构(C语言版)(第2版)课后习题答案李冬梅2015.3目录第1章绪论...................................................................................... 错误!未定义书签。

第2章线性表 .................................................................................. 错误!未定义书签。

第3章栈和队列 .............................................................................. 错误!未定义书签。

第4章串、数组和广义表 ............................................................... 错误!未定义书签。

第5章树和二叉树........................................................................... 错误!未定义书签。

第6章图............................................................................................ 错误!未定义书签。

第7章查找...................................................................................... 错误!未定义书签。

第8章排序...................................................................................... 错误!未定义书签。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

31
4、效率与低存储量需求 、
通常,效率指的是算法执行时间;存储量指的是 算法执行过程中所需要的最大存储空间。两者都 与问题的规模有关。
32
算法效率的衡量方法和准则
通常有两种衡量算法效率的方法: 事后统计法 缺点:1、必须执行程序 2、其它因素掩盖算法本质 事后分析估算法 和算法执行时间相关的因素: 1算法选用的策略 2、问题的规模 3、编写程序的语言 4、编译程序产生的机器代码的质量 5、计算机执行指令的速度
5
–例
书目自动检索系统
线性表
书目文件
书目卡片 001 高等数学 樊映川 002 理论力学 罗远祥 登录号: 003 高等数学 华罗庚 004 书名: 线性代数 栾汝书 …… 作者名: …… ……
按书名
高等数学 理论力学 线性代数 ……
S01 L01 S01 S02 ……
索引表
按分类号
分类号: 001, 003… … 樊映川 出版单位: 002, … … .. 华罗庚 出版时间: 004, … … 栾汝书 价格: … … ..
29
2、可读性 、
算法主要是为了人的阅读与交流,其次才是为计 算机执行。因此算法应该易于人的理解;另一方 面,晦涩难读的程序易于隐藏较多错误而难以调 试;
30
3.健壮性 健壮性
当输入的数据非法时,算法应当恰当地作出反映 或进行相应处理,而不是产生莫名奇妙的输出结 果。并且,处理出错的方法不应是中断程序的执 行,而应是返回一个表示错误或错误性质的值, 以便在更高的抽象层次上进行处理。
23
1.3 算法和算法分析
算法的概念和描述: 算法的概念和描述: 什么是算法? 什么是算法? 算法( 算法(Algorithm)是为了解决某类问题而规定的一 是为了解决某类问题而规定的一 个有限长的操作序列。 个有限长的操作序列。一个算法必须满足以下五 个重要特性: 个重要特性:
24
1.3 算法和算法分析
Data Structure
数据结构( 语言版 语言版) 数据结构(C语言版)
课程安排
总学时: 总学时:30 教材:《数据结构C语言版 严蔚敏、 :《数据结构 语言版》 教材:《数据结构 语言版》严蔚敏、吴伟民
-----清华大学出版社 清华大学出版社
2
第一章 绪论
1.1 数据结构的概念 1.2 基本概念和术语 1.3 算法和算法分析
15
四个基本结构

集合

线性结构

树形结构

网状结构
16
数据结构的形式定义为: 数据结构的形式定义为:数据结构是一 个二元组 Data__Structure(D,S)
其中:D是数据元素的有限集 S是D上关系的有限集 例:在计算机科学中,复数可取如下定义:复数 可取如下定义:复数是是一种数据结构 Complex=(C,R)
17
例:假设我们需要编制一个事务管理的程序, 假设我们需要编制一个事务管理的程序, 管理学校科学研究课题小组的各项事务, 管理学校科学研究课题小组的各项事务,则 首先要为程序的操作对象——课题小组设计 首先要为程序的操作对象 课题小组设计 一个数据结构。 一个数据结构。
假设每个小组由一位教师、一至三名研究生及一 至六名本科生组成,小组成员之间的关系是:教 师指导研究生,而由每位研究指导一至两名本科 生。则可以如下定义数据结构: Group=(P,R)
9
1.1 数据结构的概念
数据结构课程》 《数据结构课程》 所处的地位: 所处的地位:
10
1.2 基本概念和术语
数据(Data): 数据 对信息的一种符号表示。在计算机科学中是指所有 对信息的一种符号表示。 能输入到计算机中并被计算机程序处理的符号的总 称。 数值型数据 非数值型数据
11
1.2 基本概念和术语
12
1.2 基本概念和术语
数据对象(Data Object): 数据对象 : 性质相同的数据元素的集合。是数据的一个子集。 性质相同的数据元素的集合。是数据的一个子集。
整数数据对象
N = { 0, ±1, ±2, … }
字母字符数据对象 C={ ‘A’, ‘B’, ‘C’, … ‘F’ }
13
什么是数据结构
19
数据元素之间的关系在计算机中有两种不同的表 示方法:顺序映象和非顺序映象 顺序映象和非顺序映象,并由此得到 顺序映象和非顺序映象 两种不同的存储:顺序存储结构和链式存储结 顺序存储结构和链式存储结 构。
20
数据类型:是和数据结构密切相关的一个概念, 它最早出现在高级程序语言中,用以刻画(程序) 操作对象的特性。 按“值”的不同特性,高级程序语言中的数据类 型可分为两类:一类是非结构的原子类型 原子类型。原子 原子类型 类型的值是不可分解的。另一类是结构类型 结构类型。结 结构类型 构类型的值是由若干成分按某种结构组成的,因 此是可以分解的,并且它的成分可以是非结构的, 也可以是结构的。
37
数据元素(Data Element): 数据元素 数据的基本单位,在计算机程序中通常作为一个 数据的基本单位, 基本单位 整体进行考虑和处理。 整体进行考虑和处理。 一个数据元素可由若干个数据项组成。 一个数据元素可由若干个数据项组成。数据项 数据项组成 是数据的不可分割的最小标识单位 最小标识单位。 是数据的不可分割的最小标识单位。
35
从算法中选取一种对于所研究的问题来说是基本 操作的原操作,以该基本操作在算法中重复执行 的次数作为算法运行时间的衡量准则。
36
例一
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]; } 基本操作:乘法操作 3 时间复杂度:O(n )
18
1.2 基本概念和术语
逻辑结构--逻辑结构--数据元素间抽象化的相互关系(简称为数据结构)。 数据元素间抽象化的相互关系(简称为数据结构)。 与数据的存储无关,独立于计算机, 与数据的存储无关,独立于计算机,它是从具体问题抽 象出来的数学模型。 象出来的数学模型。
存储结构(物理结构) 存储结构(物理结构)---数据元素及其关系在计算机存储器中的存储方式。 数据元素及其关系在计算机存储器中的存储方式。 是逻辑结构用计算机语言的实现,它依赖于计算机语言。 是逻辑结构用计算机语言的实现,它依赖于计算机语言。
33
假如,随着问题规模n的增长,算法执行时间的 增长率和f(n)的增长率相同,则可记作: T(n)=o(f(n)) 称T(n)为算法的(渐近)时间复杂度
34
算法=控制结构+原操作(固有数据类型的操作) 算法的执行时间= ∑原操作(i)的执行次数*原操作(i)的执行时间 算法的执行时间 与 原操作执行次数之各 成正比
算法的概念和描述: 算法的概念和描述:
一个算法必须满足以下五个准则: 一个算法必须满足以下五个准则: (1)有穷性 (2)确定性 (3)可(能)行性 (4)输入 (5)输出
25
1、有穷性 对于任意一个组合法输入值,在执行有穷步 骤之后一定能结束,即:算法中的每个步骤都能在有限 时间内完成; 2、确定性 对于每种情况下所应执行的操作,在算法中 都有确切的规定,使算法的执行者或阅读者都能明确其 含义及如何执行。并且在任何条件下,算法都只有一条 执行路径; 3、可行性 算法中的所有操作都必须足够基本,都可以 通过已经实现的基本操作运算有限次实现之;
定义1---定义
是相互之间存在一种或多种特定关系的数据元素的集 合。
定义2---定义
按某种逻辑关系组织起来的一批数据( 按某种逻辑关系组织起来的一批数据(或称带结构 组织起来的一批数据 的数据元素的集合)应用计算机语言并按一定的存储 的数据元素的集合)应用计算机语言并按一定的存储 把它们存储在计算机的存储器中, 方式把它们存储在计算机的存储器中 表示 方式把它们存储在计算机的存储器中,并在其 上定义了一个运算的集合。 上定义了一个运算的集合。
…….
按作者名
001,… 002,…. 004,…. …….
L S ……
002,… 001,003, ……
6

–例
井字棋
……..
……..
7
…...
…...
…...
…...
–例
多叉路口交通灯管理问题

AB
ห้องสมุดไป่ตู้
AC
AD B
C D
BA
BC
BD
DA EA EB
DB EC
DC A ED
E
8
1.1 数据结构的概念
14
1.2 基本概念和术语
一、集合:结构中的数据元素除了同属于一种类型 集合: 别无其它关系。 外,别无其它关系。 线性结构: 二、线性结构:结构中的数据元素之间存在一对一 的关系,如线性表、 队列。 的关系,如线性表、栈、队列。 三、树型结构:结构中的数据元素之间存在一对多 树型结构: 的关系,如树。 的关系,如树。 图状结构或网状结构: 四、图状结构或网状结构:结构中的数据元素之间 存在多对多的关系,如图。 存在多对多的关系,如图。
4
1.1什么是数据结构 什么是数据结构
数值计算解决问题的一般步骤: 数值计算解决问题的一般步骤: 数学模型→选择计算机语言 编出程序→测试 选择计算机语言→编出程序 测试→最终解 数学模型 选择计算机语言 编出程序 测试 最终解 答。 数值计算的关键是:如何得出数学模型(方程)? 数值计算的关键是:如何得出数学模型(方程)? 程序设计人员比较关注程序设计的技巧。 程序设计人员比较关注程序设计的技巧。 非数值计算问题: 非数值计算问题: 数据元素之间的相互关系一般无法用数学方程加以描述
相关文档
最新文档