数据结构课后参考答案

合集下载

《数据结构》课后习题答案(第2版)

《数据结构》课后习题答案(第2版)

《数据结构》课后习题答案(第2版)数据结构课后习题答案(第2版)

第一章:基本概念

1. 什么是数据结构?数据结构是指数据元素之间的关系,以及相应的操作。它研究如何组织、存储和管理数据,以及如何进行高效的数据操作。

2. 数据结构的分类有哪些?数据结构可以分为线性结构和非线性结构。线性结构包括数组、链表、栈和队列;非线性结构包括树和图。

3. 什么是算法?算法是解决特定问题的一系列有序步骤。它描述了如何输入数据、处理数据,并产生期望的输出结果。

4. 算法的特性有哪些?算法具有确定性、有限性、输入、输出和可行性这五个特性。

5. 数据结构和算法之间的关系是什么?数据结构是算法的基础,算法操作的对象是数据结构。

第二章:线性表

1. 顺序表的两种实现方式是什么?顺序表可以通过静态分配或动态分配的方式实现。静态分配使用数组,动态分配使用指针和动态内存分配。

2. 单链表的特点是什么?单链表由节点组成,每个节点包含数据和

一个指向下一个节点的指针。它的插入和删除操作效率高,但是查找

效率较低。

3. 循环链表和双向链表分别是什么?循环链表是一种特殊的单链表,在尾节点的指针指向头节点。双向链表每个节点都有一个指向前一个

节点和后一个节点的指针。

4. 链表和顺序表的区别是什么?链表的插入和删除操作效率更高,

但是查找操作效率较低;顺序表的插入和删除操作效率较低,但是查

找操作效率较高。

第三章:栈和队列

1. 栈是什么?栈是一种特殊的线性表,只能在表的一端进行插入和

删除操作。后进先出(LIFO)是栈的特点。

2. 队列是什么?队列是一种特殊的线性表,只能在表的一端进行插

数据结构课后习题答案

数据结构课后习题答案
while (p->link!=b.first) p=p->link;
p->link=a.first->link; a.first->link=b.first->link; b.first->link=b.first; b.length=0; } // O(b.length) a
b
数据结构课后习题答案
while (p && p->data<b) if (p->data<=a) { q=p; p=p->link; } else { q->link=p->link; delete p; p=q->link; }
} 思考结点a和b有没有删除掉?
a=5,b=13
first 2 5 7 9 13 15
数据结构课后习题答案
2.8 设有单循环链表类CircularList,要求在类CircularList中增加一个 成员函数,在不增加新结点的情况下,直接实现两个链表合并为一个链表 的算法,并分析其时间复杂度。
// 解法1 template<class T> void Merge(CircularList<T> &a, CircularList<T> &b) { Node<T> *p=b.first;

数据结构(c语言版)课后习题答案完整版

数据结构(c语言版)课后习题答案完整版

数据结构(c语言版)课后习题答案完整版数据结构(C语言版)课后习题答案完整版

一、数据结构概述

数据结构是计算机科学中一个重要的概念,用来组织和存储数据,使之可以高效地访问和操作。在C语言中,我们可以使用不同的数据结构来解决各种问题。本文将提供完整版本的C语言数据结构的课后习题答案。

二、顺序表

1. 顺序表的定义和基本操作

顺序表是一种线性表,其中的元素在物理内存中连续地存储。在C 语言中,我们可以通过定义结构体和使用指针来实现顺序表。以下是顺序表的一些基本操作的答案:

(1)初始化顺序表

```c

typedef struct{

int data[MAX_SIZE];

int length;

} SeqList;

void InitList(SeqList *L){

L->length = 0;

}

```

(2)插入元素到顺序表中

```c

bool Insert(SeqList *L, int pos, int elem){

if(L->length == MAX_SIZE){

return false; // 顺序表已满

}

if(pos < 1 || pos > L->length + 1){

return false; // 位置不合法

}

for(int i = L->length; i >= pos; i--){

L->data[i] = L->data[i-1]; // 向后移动元素 }

L->data[pos-1] = elem;

L->length++;

return true;

}

```

(3)删除顺序表中的元素

```c

(完整版)数据结构课后答案

(完整版)数据结构课后答案

第1章绪论

1 •简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。

答案:

数据:是客观事物的符号表示,指所有能输入到计算机中并被计算机程序处理的符号的总称。如数学计算中用到的整数和实数,文本编辑所用到的字符串,多媒体程序处理的图形、图像、声音、动画等通过特殊编码定义后的数据。

数据元素:是数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。在有些情况下,数据元素也称为元素、结点、记录等。数据元素用于完整地描述一个对象,如一个学生记录,树中棋盘的一个格局(状态)、图中的一个顶点等。

数据项:是组成数据元素的、有独立含义的、不可分割的最小单位。例如,学生基本信息表中的学号、姓名、性别等都是数据项。

数据对象:是性质相同的数据元素的集合,是数据的一个子集。例如:整数数据对象是集合N={0, ± 1,土2,…},字母字符数据对象是集合C={ ‘A',‘ B',…,‘ Z', ‘a',‘ $,•••,‘ z' }, 学生基本信息表也可是一个数据对象。

数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。换句话说,数据结构是带“结构”的数据元素的集合,“结构”就是指数据元素之间存在的关系。

逻辑结构:从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。因此,数据的逻辑结构可以看作是从具体问题抽象出来的数学模型。

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

抽象数据类型:由用户定义的,表示应用问题的数学模型,以及定义在这个模型上的一组操作的总称。具体包括三部分:数据对象、数据对象上关系的集合和对数据对象的基本操作的集合。

《数据结构》课后参考答案

《数据结构》课后参考答案

单元练习1

一.判断题(下列各题,正确的请在前面的括号内打√;错误的打╳)

(√)(1)数据的逻辑结构与数据元素本身的内容和形式无关。

(√)(2)一个数据结构是由一个逻辑结构和这个逻辑结构上的一个基本运算集构成的整体。(ㄨ)(3)数据元素是数据的最小单位。

(ㄨ)(4)数据的逻辑结构和数据的存储结构是相同的。

(ㄨ)(5)程序和算法原则上没有区别,所以在讨论数据结构时可以通用。

(√)(6)从逻辑关系上讲,数据结构主要分为线性结构和非线性结构两类。

(√)(7)数据的存储结构是数据的逻辑结构的存储映像。

(√)(8)数据的物理结构是指数据在计算机内实际的存储形式。

(ㄨ)(9)数据的逻辑结构是依赖于计算机的。

(√)(10)算法是对解题方法和步骤的描述。

二.填空题

(1)数据有逻辑结构和存储结构两种结构。

(2)数据逻辑结构除了集合以外,还包括:线性结构、树形结构和图形结构。(3)数据结构按逻辑结构可分为两大类,它们是线性结构和非线性结构。

(4)树形结构和图形结构合称为非线性结构。

(5)在树形结构中,除了树根结点以外,其余每个结点只有 1 个前趋结点。

(6)在图形结构中,每个结点的前趋结点数和后续结点数可以任意多个。

(7)数据的存储结构又叫物理结构。

(8)数据的存储结构形式包括:顺序存储、链式存储、索引存储和散列存储。(9)线性结构中的元素之间存在一对一的关系。

(10)树形结构结构中的元素之间存在一对多的关系,

(11)图形结构的元素之间存在多对多的关系。

(12)数据结构主要研究数据的逻辑结构、存储结构和算法(或运算)三个方面的内容。

数据结构课程课后习题答案

数据结构课程课后习题答案
(6)在图形结构中,每个结点的前驱结点数和后继结点数可以是()。
答:任意多个
(7)数据的存储结构主要有四种,它们分别是①、②、③和④存储结构。
答:①顺序②链式③索引④哈希
(8)一个算法的效率可分为①效率和②效率。
答:①时间②空间
3.
(1)数据结构和数据类型两个概念之间有区别吗?
答:简单地说,数据结构定义了一组按某些关系结合在一起的数组元素的集合。数据类型不仅定义了一组数据元素,而且还在其上定义了一组操作。
顺序表适宜于做查找这样的静态操作;链表宜于做插入、删除这样的动态操作。若线性表的长度变化不大,且其主要操作是查找,则采用顺序表;若线性表的长度变化较大,且其主要操作是插入、删除操作,则采用链表。
(2)对于表长为n的顺序表,在任何位置上插入或删除一个元素的概率相等时,插入一个元素所需要移动的元素的平均个数为多少?删除一个元素所需要移动的平均个数为多少?
①单链表;
②仅有头指针不带头结点的循环单链表;
③双链表;
④仅有尾指针的循环单链表。
答:在单链表中,删除第一个结点的时间复杂度为O(1)。插入结点需找到前驱结点,所以在尾结点之后插入一个结点,需找到尾结点,对应的时间复杂度为O(n)。
在仅有头指针不带头结点的循环单链表中,删除第一个结点的时间复杂度O(n),因为删除第一个结点后还要将其改为循环单链表;在尾结点之后插入一个结点的时间复杂度也为O(n)。

数据结构课后习题答案

数据结构课后习题答案

大学课程《数据结构》课后习题答案

第 1 章绪论

课后习题讲解

1. 填空

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

【解答】数据元素

⑵()是数据的最小单位,()是讨论数据结构时涉及的最小数据单位。

【解答】数据项,数据元素

【分析】数据结构指的是数据元素以及数据元素之间的关系。

⑶从逻辑关系上讲,数据结构主要分为()、()、()和()。

【解答】集合,线性结构,树结构,图结构

⑷数据的存储结构主要有()和()两种基本方法,不论哪种存储结构,都要存储两方面的内容:()和()。

【解答】顺序存储结构,链接存储结构,数据元素,数据元素之间的关系

⑸算法具有五个特性,分别是()、()、()、()、()。

【解答】有零个或多个输入,有一个或多个输出,有穷性,确定性,可行性

⑹算法的描述方法通常有()、()、()和()四种,其中,()被称为算法语言。

【解答】自然语言,程序设计语言,流程图,伪代码,伪代码

⑺在一般情况下,一个算法的时间复杂度是()的函数。

【解答】问题规模

⑻设待处理问题的规模为n,若一个算法的时间复杂度为一个常数,则表示成数量级的形式为(),若为n*log25n,则表示成数量级的形式为()。

【解答】Ο(1),Ο(nlog2n)

【分析】用大O记号表示算法的时间复杂度,需要将低次幂去掉,将最高次幂的系数去掉。

2. 选择题

⑴顺序存储结构中数据元素之间的逻辑关系是由()表示的,链接存储结构中的数据元素之间的逻辑关系是由()表示的。

A 线性结构

B 非线性结构

C 存储位置

D 指针

【解答】C,D

《数据结构》课后题及答案

《数据结构》课后题及答案

第一章绪论

一、选择题

1、( )是数据的基本单位。

A) 数据结构B)数据元素C)数据项D)数据类型

2、以下说法不正确的是( )。

A)数据结构就是数据之间的逻辑结构。

B)数据类型可看成是程序设计语言中已实现的数据结构。

C)数据项是组成数据元素的最小标识单位。

D)数据的抽象运算不依赖具体的存储结构。

3、计算机算法是解决问题的有限运算序列,它具备输入、输出和()等5个特性。

A)可执行性、可移植性和可扩充性B)可行性、确定性和有穷性

C)确定性、有穷性和稳定性D)易读性、稳定性和安全性

4、一般而言,最适合描述算法的语言是( )。

A)自然语言B)计算机程序语言

C)介于自然语言和程序设计语言之间的伪语言D)数学公式

5、通常所说的时间复杂度指( )。

A)语句的频度B)算法的时间消耗

C)渐近时间复杂度D)最坏时间复杂度

6、A算法的时间复杂度为O(n3),B算法的时间复杂度为O(2n),则说明( )。

A)对于任何数据量,A算法的时间开销都比B算法小

B)随着问题规模n的增大,A算法比B算法有效

C)随着问题规模n的增大,B算法比A算法有效

D)对于任何数据量,B算法的时间开销都比A算法小

7、算法分析的目的是()。

A)找出数据结构的合理性B)研究算法中的输入和输出的关系

C)分析算法的效率以求改进D)分析算法的易懂性和文档性

8、下面程序段的时间复杂度为()。

for( i=0; i<m; i++)

for( j=0; j<n; j++)

a[i][j]=i*j;

A)O(m2) B) O(n2) C) O(m*n) D) O(m+n)

数据结构课后参考答案

数据结构课后参考答案

第 3 章特殊线性表——栈、队列和串

2005-07-14

第 3 章特殊线性表——栈、队列和串

课后习题讲解

1. 填空

⑴设有一个空栈,栈顶指针为1000H,现有输入序列为1、2、3、4、5,经过push,push,pop,push,pop,push,push后,输出序列是(),栈顶指针为()。

【解答】23,1003H

⑵栈通常采用的两种存储结构是();其判定栈空的条件分别是(),判定栈满的条件分别是()。【解答】顺序存储结构和链接存储结构(或顺序栈和链栈),栈顶指针top= -1和top=NULL,栈顶指针top等于数组的长度和内存无可用空间

⑶()可作为实现递归函数调用的一种数据结构。

【解答】栈

【分析】递归函数的调用和返回正好符合后进先出性。

⑷表达式a*(b+c)-d的后缀表达式是()。

【解答】abc+*d-

【分析】将中缀表达式变为后缀表达式有一个技巧:将操作数依次写下来,再将算符插在它的两个操作数的后面。

⑸栈和队列是两种特殊的线性表,栈的操作特性是(),队列的操作特性是(),栈和队列的主要区别在于()。

【解答】后进先出,先进先出,对插入和删除操作限定的位置不同

⑹循环队列的引入是为了克服()。

【解答】假溢出

⑺数组Q[n]用来表示一个循环队列,front为队头元素的前一个位置,rear为队尾元素的位置,计算队列中元素个数的公式为()。

【解答】(rear-front+n)% n

【分析】也可以是(rear-front)% n,但rear-front的结果可能是负整数,而对一个负整数求模,其结果在不同的编译器环境下可能会有所不同。

(完整版)数据结构课后答案

(完整版)数据结构课后答案

第1章绪论

1 •简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。

答案:

数据:是客观事物的符号表示,指所有能输入到计算机中并被计算机程序处理的符号的总称。如数学计算中用到的整数和实数,文本编辑所用到的字符串,多媒体程序处理的图形、图像、声音、动画等通过特殊编码定义后的数据。

数据元素:是数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。在有些情况下,数据元素也称为元素、结点、记录等。数据元素用于完整地描述一个对象,如一个学生记录,树中棋盘的一个格局(状态)、图中的一个顶点等。

数据项:是组成数据元素的、有独立含义的、不可分割的最小单位。例如,学生基本信息表中的学号、姓名、性别等都是数据项。

数据对象:是性质相同的数据元素的集合,是数据的一个子集。例如:整数数据对象是集合N={0, ± 1,土2,…},字母字符数据对象是集合C={ ‘A',‘ B',…,‘ Z', ‘a',‘ $,•••,‘ z' }, 学生基本信息表也可是一个数据对象。

数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。换句话说,数据结构是带“结构”的数据元素的集合,“结构”就是指数据元素之间存在的关系。

逻辑结构:从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。因此,数据的逻辑结构可以看作是从具体问题抽象出来的数学模型。

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

抽象数据类型:由用户定义的,表示应用问题的数学模型,以及定义在这个模型上的一组操作的总称。具体包括三部分:数据对象、数据对象上关系的集合和对数据对象的基本操作的集合。

《数据结构》课后参考答案

《数据结构》课后参考答案

《数据结构》课后参考答案

第一题:

1. 什么是数据结构?

数据结构是一种组织和存储数据的方式,它涉及到数据的逻辑关系、数据元素之间的操作和存储方式等。数据结构可以帮助我们更有效地

组织和管理数据,提高程序的运行效率。

第二题:

2. 请简述线性表和链表的区别。

线性表是一种线性结构,其中的数据元素按照线性的顺序排列。线

性表可以使用数组实现,也可以使用链表实现。链表是一种动态数据

结构,它通过节点之间的指针连接来存储数据元素。

主要区别:

- 存储方式:线性表使用静态的连续内存空间存储,而链表使用动

态的节点存储,并通过指针连接节点。

- 插入和删除操作:线性表需要移动数组中的元素,而链表只需要

修改指针指向即可。

- 访问效率:线性表可以通过下标直接访问元素,访问效率高;链

表需要从头节点开始逐个遍历,访问效率较低。

第三题:

3. 请描述栈和队列的特点及其应用场景。

栈和队列都是常用的线性数据结构,它们在不同的场景中有着不同的特点和应用。

栈的特点:

- 先进后出(LIFO)的数据结构。

- 只能在栈顶进行插入和删除操作。

- 用途广泛,如函数调用、表达式求值、计算机内存的管理等。

队列的特点:

- 先进先出(FIFO)的数据结构。

- 可以在队尾插入元素,在队头删除元素。

- 用途广泛,如任务调度、消息传递、广度优先搜索等。

第四题:

4. 请简述树和图的区别以及它们的应用场景。

树和图都是常用的非线性数据结构,它们之间有着一些区别和各自的应用场景。

树的特点:

- 由节点和边组成的层次结构。

- 每个节点最多有一个父节点和多个子节点。

- 常用的树结构有二叉树、平衡二叉树、B树等。

《数据结构》课后参考答案

《数据结构》课后参考答案

单元练习1

一.判断题(下列各题,正确的请在前面的括号内打√;错误的打╳)

(√)(1)数据的逻辑结构与数据元素本身的内容和形式无关。

(√)(2)一个数据结构是由一个逻辑结构和这个逻辑结构上的一个基本运算集构成的整体。(ㄨ)(3)数据元素是数据的最小单位。

(ㄨ)(4)数据的逻辑结构和数据的存储结构是相同的。

(ㄨ)(5)程序和算法原则上没有区别,所以在讨论数据结构时可以通用。

(√)(6)从逻辑关系上讲,数据结构主要分为线性结构和非线性结构两类。

(√)(7)数据的存储结构是数据的逻辑结构的存储映像。

(√)(8)数据的物理结构是指数据在计算机内实际的存储形式。

(ㄨ)(9)数据的逻辑结构是依赖于计算机的。

(√)(10)算法是对解题方法和步骤的描述。

二.填空题

(1)数据有逻辑结构和存储结构两种结构。

(2)数据逻辑结构除了集合以外,还包括:线性结构、树形结构和图形结构。(3)数据结构按逻辑结构可分为两大类,它们是线性结构和非线性结构。

(4)树形结构和图形结构合称为非线性结构。

(5)在树形结构中,除了树根结点以外,其余每个结点只有 1 个前趋结点。

(6)在图形结构中,每个结点的前趋结点数和后续结点数可以任意多个。

(7)数据的存储结构又叫物理结构。

(8)数据的存储结构形式包括:顺序存储、链式存储、索引存储和散列存储。(9)线性结构中的元素之间存在一对一的关系。

(10)树形结构结构中的元素之间存在一对多的关系,

(11)图形结构的元素之间存在多对多的关系。

(12)数据结构主要研究数据的逻辑结构、存储结构和算法(或运算)三个方面的内容。

《数据结构》教材课后习题+答案

《数据结构》教材课后习题+答案

《数据结构》教材课后习题+答案数据结构

第一章介绍

数据结构是计算机科学中重要的概念,它涉及到组织和存储数据的方法和技术。数据结构的选择对于算法的效率有着重要的影响。本教材为读者提供了丰富的课后习题,以帮助读者巩固所学知识并提高解决问题的能力。下面是一些选定的习题及其答案,供读者参考。

第二章线性表

习题一:

给定一个顺序表L,编写一个算法,实现将其中元素逆置的功能。

答案一:

算法思路:

1. 初始化两个指针i和j,分别指向线性表L的首尾两个元素

2. 对于L中的每一个元素,通过交换i和j所指向的元素,将元素逆置

3. 当i>=j时,停止逆置

算法实现:

```python

def reverse_list(L):

i, j = 0, len(L)-1

while i < j:

L[i], L[j] = L[j], L[i]

i += 1

j -= 1

```

习题二:

给定两个线性表A和B,编写一个算法,将线性表B中的元素按顺序插入到线性表A中。

答案二:

算法思路:

1. 遍历线性表B中的每一个元素

2. 将B中的元素依次插入到A的末尾

算法实现:

```python

def merge_lists(A, B):

for element in B:

A.append(element)

```

第三章栈和队列

习题一:

编写一个算法,判断一个表达式中的括号是否匹配。表达式中的括号包括小括号"()"、中括号"[]"和大括号"{}"。

答案一:

算法思路:

1. 遍历表达式中的每一个字符

2. 当遇到左括号时,将其推入栈中

3. 当遇到右括号时,判断栈顶元素是否与其匹配

数据结构课后习题答案-完整版

数据结构课后习题答案-完整版

数据结构课后习题答案-完整版下面是《数据结构课后习题答案-完整版》的内容:

---

第一章:数组

1. 题目:给定一个整数数组,判断是否存在两个元素之和等于目标值。

答案:使用双指针法,首先将数组排序,然后设置左指针指向数组头部,右指针指向数组尾部。如果左指针和右指针指向的元素之和小于目标值,则左指针右移;如果大于目标值,则右指针左移;如果等于目标值,则找到了两个元素之和等于目标值的情况。

2. 题目:给定一个整数数组和一个目标值,找出数组中和为目标值的两个数的下标。

答案:使用哈希表,在遍历数组的过程中,将每个元素的值和下标存储在哈希表中。遍历到当前元素时,检查目标值与当前元素的差值是否在哈希表中,如果存在,则找到了两个数的下标。

---

第二章:链表

1. 题目:给定一个链表,判断链表中是否存在环。

答案:使用快慢指针法,定义两个指针,一个指针每次向前移动

一个节点,另一个指针每次向前移动两个节点。如果存在环,则两个

指针必定会相遇。

2. 题目:给定一个链表,删除链表的倒数第N个节点。

答案:使用双指针法,定义两个指针,一个指针先移动N个节点,然后两个指针同时向前移动,直到第一个指针到达链表尾部。此时第

二个指针指向的节点即为要删除的节点。

---

第三章:栈和队列

1. 题目:设计一个栈,使得可以在常数时间内获取栈中的最小元素。

答案:使用辅助栈来保存当前栈中的最小元素。每次压栈操作时,将当前元素与辅助栈的栈顶元素比较,只有当前元素较小才将其压入

辅助栈。

2. 题目:设计一个队列,使得可以在常数时间内获取队列中的最大

《数据结构》各章课后作业答案

《数据结构》各章课后作业答案

《数据结构》各章课后作业答案 第一章 绪论课后作业答案

1. 简述线性结构与非线性结构的不同点。 答:线性结构反映结点间的逻辑关系是一对一的,非线性结构反映结点间的逻辑关系是多对多的。

2.分析下面各程序段的时间复杂度(每小题5分,共20分)

解:1.第一个for 循环执行n+1次,第二个for 循环执行n(m+1)次,A[i][j]=0;语句执行n*m 次,此程序段总的执行次数为n+1+n*(m+1)+n*m=2nm+2n+1次。故时间复杂度为O(n*m)。

2.算法的时间复杂度是由嵌套最深层语句的执行次数决定的,本程序段嵌套最深层语句为:

s+=B[i][j];

它的执行次数为n 2,所以本程序段的时间复杂度是O(n 2

)。

3. 该算法的基本操作是语句x++, 其语句频度为:

111

1n n i i j --==∑∑=10

()n i n i -=-∑=

(1)

2

n n - 所以本程序段的时间复杂度是O(n 2

)。

4.设语句执行m 次,则有

3m

≤n ⇒m ≤log 3n

所以本程序段的时间复杂度为O(log 3n)。

第二章 线性表课后作业答案

1. 填空题。

(1)在顺序表中插入或删除一个元素,需要平均移动表中一半元素,具体移动的元素个数与表长和该元素在表中的位置有关。

(2)线性表中结点的集合是 有限 的,结点间的关系是 一对一的。

(2)s=0;

for (i=0; i<n; i++)

for(j=0; j<n; j++) s+=B[i][j]; sum=s; 答:O (n 2)

(1) for (i=0; i<n; i++) for (j=0; j<m; j++) A[i][j]=0;

数据结构课后答案

数据结构课后答案

第1章绪论

1.简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型.

答案:

数据:是客观事物的符号表示,指所有能输入到计算机中并被计算机程序处理的符号的总称。如数学计算中用到的整数和实数,文本编辑所用到的字符串,多媒体程序处理的图形、图像、声音、动画等通过特殊编码定义后的数据。

数据元素:是数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。在有些情况下,数据元素也称为元素、结点、记录等。数据元素用于完整地描述一个对象,如一个学生记录,树中棋盘的一个格局(状态)、图中的一个顶点等。

数据项:是组成数据元素的、有独立含义的、不可分割的最小单位.例如,学生基本信息表中的学号、姓名、性别等都是数据项。

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

数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。换句话说,数据结构是带“结构”的数据元素的集合,“结构”就是指数据元素之间存在的关系。

逻辑结构:从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的.因此,数据的逻辑结构可以看作是从具体问题抽象出来的数学模型.

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

抽象数据类型:由用户定义的,表示应用问题的数学模型,以及定义在这个模型上的一组操作的总称。具体包括三部分:数据对象、数据对象上关系的集合和对数据对象的基本操作的集合。

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

单元练习1

一.判断题(下列各题,正确的请在前面的括号打√;错误的打╳)

(√)(1)数据的逻辑结构与数据元素本身的容和形式无关。

(√)(2)一个数据结构是由一个逻辑结构和这个逻辑结构上的一个基本运算集构成的整体。

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

(ㄨ)(4)数据的逻辑结构和数据的存储结构是相同的。

(ㄨ)(5)程序和算法原则上没有区别,所以在讨论数据结构时可以通用。

(√)(6)从逻辑关系上讲,数据结构主要分为线性结构和非线性结构两类。

(√)(7)数据的存储结构是数据的逻辑结构的存储映像。

(√)(8)数据的物理结构是指数据在计算机实际的存储形式。

(ㄨ)(9)数据的逻辑结构是依赖于计算机的。

(√)(10)算法是对解题方法和步骤的描述。

二.填空题

(1)数据有逻辑结构和存储结构两种结构。

(2)数据逻辑结构除了集合以外,还包括:线性结构、树形结构和图形结构。(3)数据结构按逻辑结构可分为两大类,它们是线性结构和非线性结构。(4)树形结构和图形结构合称为非线性结构。

(5)在树形结构中,除了树根结点以外,其余每个结点只有 1 个前趋结点。(6)在图形结构中,每个结点的前趋结点数和后续结点数可以任意多个。(7)数据的存储结构又叫物理结构。

(8)数据的存储结构形式包括:顺序存储、链式存储、索引存储和散列存储。(9)线性结构中的元素之间存在一对一的关系。

(10)树形结构结构中的元素之间存在一对多的关系,

(11)图形结构的元素之间存在多对多的关系。

(12)数据结构主要研究数据的逻辑结构、存储结构和算法(或运算)三个方面的容。

(13)数据结构被定义为(D,R),其中D是数据的有限集合,R是D上的关系的有限集合。

(14)算法是一个有穷指令的集合。

(15)算法效率的度量可以分为事先估算法和事后统计法。

(16)一个算法的时间复杂性是算法输入规模的函数。

(17)算法的空间复杂度是指该算法所耗费的存储空间,它是该算法求解问题规模n 的函数。

(18)若一个算法中的语句频度之和为T(n)=6n+3nlog2n,则算法的时间复杂度为O (nlog2n)。

(19)若一个算法中的语句频度之和为T(n)=3n+nlog2n+n2,则算法的时间复杂度为O (n2)。

(20)数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象,以及它们之间的关系和运算的学科。

三.选择题

(1)数据结构通常是研究数据的( A )及它们之间的相互联系。

A. 存储结构和逻辑结构

B. 存储和抽象

C. 联系和抽象

D. 联系与逻辑(2)在逻辑上可以把数据结构分成:( C )。

A. 动态结构和静态结构

B. 紧凑结构和非紧凑结构

C. 线性结构和非线性结构

D. 部结构和外部结构

(3)数据在计算机存储器表示时,物理地址和逻辑地址相同并且是连续的,称之为( C )。

A. 存储结构

B. 逻辑结构

C. 顺序存储结构

D. 链式存储结

(4)非线性结构中的每个结点( D )。

A.无直接前趋结点

B.无直接后继结点

C.只有一个直接前趋结点和一个直接后继结点

D.可能有多个直接前趋结点和多个直接后继结点

(5)链式存储的存储结构所占存储空间( A )。

A.分两部分,一部分存放结点的值,另一部分存放表示结点间关系的指针

B.只有一部分,存放结点的值

C.只有一部分,存储表示结点间关系的指针

D.分两部分,一部分存放结点的值,另一部分存放结点所占单元素

(6)算法的计算量大小称为算法的( C )。

A. 现实性

B. 难度

C. 时间复杂性

D. 效率

(7)数据的基本单位是( B )。

A. 数据结构

B. 数据元素

C. 数据项

D. 文件

(8)每个结点只含有一个数据元素,所有存储结点相继存放在一个连续的存储区里,这种存储结构称为( A )结构。

A. 顺序存储

B. 链式存储

C. 索引存储

D. 散列存储(9)每一个存储结点不仅含有一个数据元素,还包含一组指针,该存储方式是( B )存储方式。

A. 顺序

B. 链式

C. 索引

D. 散列

(10)以下任何两个结点之间都没有逻辑关系的是( D )。

A. 图形结构

B. 线性结构

C. 树形结构

D. 集合(11)在数据结构中,与所使用的计算机无关的是( C )。

A. 物理结构

B. 存储结构

C. 逻辑结构

D. 逻辑和存储结构

(12)下列四种基本逻辑结构中,数据元素之间关系最弱的是( A )。

A. 集合

B. 线性结构

C. 树形结构

D. 图形结构(13)与数据元素本身的形式、容、相对位置、个数无关的是数据的( A )。

A. 逻辑结构

B. 存储结构

C. 逻辑实现

D. 存储实现

(14)每一个存储结点只含有一个数据元素,存储结点存放在连续的存储空间,另外有一组指明结点存储位置的表,该存储方式是( C )存储方式。

A. 顺序

B. 链式

C. 索引

D. 散列(15)算法能正确的实现预定功能的特性称为算法的( A )。

A. 正确性

B. 易读性

C. 健壮性

D. 高效性(16)算法在发生非法操作时可以作出处理的特性称为算法的( C )。

A. 正确性

B. 易读性

C. 健壮性

D. 高效性(17)下列时间复杂度中最坏的是( D )。

A. O(1)

B. O(n)

C. O(log2n)

D. O(n2)(18)下列算法的时间复杂度是( D )。

for (i=0;i

for (j=0;i

c[i][j]=i+j;

A. O(1)

B. O(n)

C. O(log2n)

D. O(n2)(19)算法分析的两个主要方面是( A )。

A. 空间复杂性和时间复杂性

B. 正确性和简明性

C. 可读性和文档性

D. 数据复杂性和程序复杂性

(20)计算机算法必须具备输入、输出和( C )。

A. 计算方法

B. 排序方法

C. 解决问题的有限运算步骤

D. 程序设计方法

四.分析下面各程序段的时间复杂度

(1)for (i=0;i

for (j=0;j

A[i][j]

解:O(n*m)

(2)s=0;

for (i=0;i

for (j=0;j

s+=B[i][j];

sum=s;

解:O(n2)

(3)T=A;

A=B;

B=T;

解:O(1)

(4)s1(int n)

{ int p=1,s=0;

for (i=1;i<=n;i++)

{ p*=i;s+=p; }

return(s);

}

O(n)

(5)s2(int n)

相关文档
最新文档