数据结构题集答案复习过程

合集下载

严蔚敏数据结构题集解答224页

严蔚敏数据结构题集解答224页

严蔚敏数据结构题集解答224页第一章基本概念和术语1.1数据结构的定义和作用数据结构是指数据对象中数据元素之间的关系,以及对这些关系的操作。

它在计算机科学中起着重要的作用,可以帮助我们更好地组织和管理数据。

1.2算法的定义和特性算法是一系列解决问题的清晰指令,它包含了一系列的步骤和规则,能够将输入转换为输出。

算法需要具备以下特性:确定性、有限性、可行性和输入输出。

第二章线性表2.1线性表的基本概念和表示线性表是由零个或多个数据元素组成的有限序列,它是一种常用的数据结构。

线性表可以使用顺序存储结构或链式存储结构进行表示。

2.2线性表的基本操作线性表的基本操作包括插入、删除、查找等。

插入操作可以在指定的位置插入一个新元素,删除操作可以删除指定位置的元素,查找操作可以根据给定条件来查找满足要求的元素。

第三章栈和队列3.1栈的定义和基本操作栈是一种特殊的线性表,它只允许在栈的一端进行插入和删除操作,这一端称为栈顶。

栈的基本操作包括进栈和出栈,以及栈空和栈满的判断。

3.2队列的定义和基本操作队列是一种特殊的线性表,它只允许在一端进行插入操作,在另一端进行删除操作,插入端称为队尾,删除端称为队头。

队列的基本操作包括入队和出队,以及队空和队满的判断。

第四章串4.1串的基本概念和表示方法串是由零个或多个字符组成的有限序列,它是一种特殊的线性表。

串的表示方法有两种:顺序存储和链式存储。

4.2朴素的模式匹配算法朴素的模式匹配算法是一种简单而有效的模式匹配算法,它通过逐个字符地比较主串和模式串的字符来进行匹配。

第五章数组和广义表5.1数组的定义和基本操作数组是一种线性表,它由一系列相同类型的元素组成。

数组的基本操作包括插入和删除元素,以及数组的查找和排序等。

5.2广义表的定义和基本操作广义表是一种扩展的线性表,它可以包含任意类型的元素,不仅可以是数据元素,还可以是另一个广义表。

广义表的基本操作包括对表头和表尾的操作,以及广义表的插入和删除等。

数据结构题集及答案

数据结构题集及答案

判断题1.数据的逻辑结构与数据元素本身的内容和形式无关。

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

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

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

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

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

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

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

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

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

(√)填空题:1.数据有逻辑结构和存储结构两种结构。

2.数据逻辑结构除了集合以外,还包括线性结构、树形结构和图形结构。

3.数据结构按逻辑结构可分为两大类,它们是线性结构和非线性结构。

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

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

6.在图形结构中,每个结点的前驱结点数和后继结点数可以任意多个。

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

8.数据的存储结构形式包括顺序存储、链式存储、索引存储和散列存储。

9.线性结构中的元素之间存在一对一的关系。

10.树形结构中的元素之间存在一对多的关系。

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

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

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

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

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

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

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

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

数据结构教程(含习题和答案)

数据结构教程(含习题和答案)

第一章:概论(包括习题与答案及要点)本章的重点是了解数据结构的逻辑结构、存储结构、数据的运算三方面的概念及相互关系,难点是算法复杂度的分析方法。

需要达到<识记>层次的基本概念和术语有:数据、数据元素、数据项、数据结构。

特别是数据结构的逻辑结构、存储结构及数据运算的含义及其相互关系。

数据结构的两大类逻辑结构和四种常用的存储表示方法。

需要达到<领会>层次的内容有算法、算法的时间复杂度和空间复杂度、最坏的和平均时间复杂度等概念,算法描述和算法分析的方法、对一般的算法要能分析出时间复杂度。

--------------------------------------------------------------------------------对于基本概念,仔细看书就能够理解,这里简单提一下:数据就是指能够被计算机识别、存储和加工处理的信息的载体。

数据元素是数据的基本单位,有时一个数据元素可以由若干个数据项组成。

数据项是具有独立含义的最小标识单位。

如整数这个集合中,10这个数就可称是一个数据元素.又比如在一个数据库(关系式数据库)中,一个记录可称为一个数据元素,而这个元素中的某一字段就是一个数据项。

数据结构的定义虽然没有标准,但是它包括以下三方面内容:逻辑结构、存储结构、和对数据的操作。

这一段比较重要,我用自己的语言来说明一下,大家看看是不是这样。

比如一个表(数据库),我们就称它为一个数据结构,它由很多记录(数据元素)组成,每个元素又包括很多字段(数据项)组成。

那么这张表的逻辑结构是怎么样的呢? 我们分析数据结构都是从结点(其实也就是元素、记录、顶点,虽然在各种情况下所用名字不同,但说的是同一个东东)之间的关系来分析的,对于这个表中的任一个记录(结点),它只有一个直接前趋,只有一个直接后继(前趋后继就是前相邻后相邻的意思),整个表只有一个开始结点和一个终端结点,那我们知道了这些关系就能明白这个表的逻辑结构了。

数据结构课程课后习题集答案解析

数据结构课程课后习题集答案解析

《数据结构简明教程》练习题及参考答案练习题11. 单项选择题(1)线性结构中数据元素之间是()关系。

A.一对多B.多对多C.多对一D.一对一答:D(2)数据结构中与所使用的计算机无关的是数据的()结构。

A.存储B.物理C.逻辑D.物理和存储答:C(3)算法分析的目的是()。

A.找出数据结构的合理性B.研究算法中的输入和输出的关系C.分析算法的效率以求改进D.分析算法的易懂性和文档性答:C(4)算法分析的两个主要方面是()。

A.空间复杂性和时间复杂性B.正确性和简明性C.可读性和文档性D.数据复杂性和程序复杂性答:A(5)计算机算法指的是()。

A.计算方法B. 排序方法C.求解问题的有限运算序列D.调度方法答:C(6)计算机算法必须具备输入、输出和()等5个特性。

A.可行性、可移植性和可扩充性B.可行性、确定性和有穷性C.确定性、有穷性和稳定性D.易读性、稳定性和安全性答:B2. 填空题(1)数据结构包括数据的①、数据的②和数据的③这三个方面的内容。

答:①逻辑结构②存储结构③运算(2)数据结构按逻辑结构可分为两大类,它们分别是①和②。

答:①线性结构②非线性结构(3)数据结构被形式地定义为(D,R),其中D是①的有限集合,R是D上的②有限集合。

答:①数据元素②关系数据结构简明教程(4)在线性结构中,第一个结点 ① 前驱结点,其余每个结点有且只有1个前驱结点;最后一个结点 ② 后继结点,其余每个结点有且只有1个后继结点。

答:①没有 ②没有 (5)在树形结构中,树根结点没有 ① 结点,其余每个结点有且只有 ② 个前驱结点;叶子结点没有 ③ 结点,其余每个结点的后继结点数可以是 ④ 。

答:①前驱 ②1 ③后继 ④任意多个(6)在图形结构中,每个结点的前驱结点数和后继结点数可以是( )。

答:任意多个(7)数据的存储结构主要有四种,它们分别是 ① 、 ② 、 ③ 和 ④ 存储结构。

答:①顺序 ②链式 ③索引 ④哈希(8)一个算法的效率可分为 ① 效率和 ② 效率。

数据结构复习题及答案

数据结构复习题及答案

数据结构复习题及答案数据结构复习题及答案数据结构是计算机科学中的重要基础,它涉及到存储、组织和管理数据的方法和技术。

在学习数据结构的过程中,我们经常会遇到各种复习题,通过解答这些题目可以巩固对数据结构的理解和掌握。

本文将给出一些常见的数据结构复习题及其答案,希望对读者的学习有所帮助。

一、数组1. 给定一个整数数组,如何找到数组中的最大值和最小值?答案:可以使用遍历数组的方式,依次比较每个元素与当前的最大值和最小值,更新最大值和最小值即可。

2. 给定一个整数数组和一个目标值,如何判断数组中是否存在两个数的和等于目标值?答案:可以使用两层循环遍历数组,依次判断每两个数的和是否等于目标值。

二、链表1. 如何反转一个单链表?答案:可以使用三个指针prev、curr和next,分别表示当前节点的前一个节点、当前节点和当前节点的下一个节点。

通过遍历链表,每次将当前节点的next指针指向prev节点,然后更新prev、curr和next指针,直到遍历到链表的末尾。

2. 如何判断一个链表是否有环?答案:可以使用快慢指针的方法。

定义两个指针slow和fast,初始时都指向链表的头节点。

slow指针每次移动一步,fast指针每次移动两步。

如果链表中存在环,那么两个指针最终会相遇;如果链表中不存在环,那么fast指针会先到达链表的末尾。

三、栈和队列1. 如何使用栈实现队列?答案:可以使用两个栈来实现队列。

一个栈用来存储入队的元素,另一个栈用来存储出队的元素。

当需要入队时,直接将元素压入第一个栈;当需要出队时,如果第二个栈为空,则将第一个栈中的元素依次弹出并压入第二个栈,然后从第二个栈中弹出元素;如果第二个栈不为空,则直接从第二个栈中弹出元素。

2. 如何使用队列实现栈?答案:可以使用两个队列来实现栈。

一个队列用来存储元素,另一个队列用来辅助操作。

当需要入栈时,直接将元素入队;当需要出栈时,将队列中的元素依次出队并入辅助队列,直到队列中只剩下一个元素,然后将该元素出队;然后交换两个队列的角色,使得辅助队列成为主队列,主队列成为辅助队列。

数据结构习题集(包含全部答案).

数据结构习题集(包含全部答案).

数据结构习题集(自编)第一章绪论一、选择题1.数据结构是一门研究非数值计算的程序设计问题中的操作对象以及它们之间的()和运算的学科。

A.结构B.关系 C.运算 D.算法2.在数据结构中,从逻辑上可以把数据结构分成()。

A.动态结构和静态结构 B.紧凑结构和非紧凑结构C.线性结构和非线性结构 D.逻辑结构和存储结构3.线性表的逻辑顺序和存储顺序总是一致的,这种说法()。

A.正确B.不正确 C.无法确定 D.以上答案都不对4.算法分析的目的是()。

A.找出算法的合理性 B.研究算法的输人与输出关系C.分析算法的有效性以求改进 D.分析算法的易懂性5. 算法的时间复杂度取决于()A.问题的规模B待处理数据的初态 C. A和B6.一个算法应该是()。

A.程序B.问题求解步骤的描述C.要满足五个基本特性 D.A和C.7. 下面关于算法说法错误的是()A.算法最终必须由计算机程序实现B.为解决某问题的算法与为该问题编写的程序含义是相同的C. 算法的可行性是指指令不能有二义性D. 以上几个都是错误的8.以下与数据的存储结构无关的术语是()。

A.循环队列 B. 链表 C. 哈希表 D. 栈9.在下面的程序段中,对x的赋值语句的频度为()for(i=0;i<n;i++)for(j=0;j<n;j++)x=x+1;nA. 2n B.n C.n2 D.log210.以下数据结构中,()是非线性数据结构A.树 B.字符串 C.队列 D.栈11. 下列数据中,()是线性数据结构。

A.哈夫曼树 B.有向无环图 C. 二叉排序树 D. 栈12.以下属于逻辑结构的是()。

A.顺序表 B. 哈希表 C.有序表 D. 单链表二、填空题1、_______是信息的载体,是对客观事物的符号表示,它能够被计算机识别、存储、加工和处理,________是对能够有效的输人到计算机中并且能够被计算机处理的符号的总称。

(数据、数据)2、数据元素是数据的______,有些情况下也称为元素、结点、顶点、记录等。

数据结构复习参考题与参考答案

数据结构复习参考题与参考答案

第一章概论自测题答案一、填空题1. 数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和运算等的学科。

2. 数据结构被形式地定义为(D, R),其中D是数据元素的有限集合,R是D上的关系有限集合。

3. 数据结构包括数据的逻辑结构、数据的存储结构和数据的运算这三个方面的内容。

4. 数据结构按逻辑结构可分为两大类,它们分别是线性结构和非线性结构。

5. 线性结构中元素之间存在一对一关系,树形结构中元素之间存在一对多关系,图形结构中元素之间存在多对多关系。

6.在线性结构中,第一个结点没有前驱结点,其余每个结点有且只有 1个前驱结点;最后一个结点没有后续结点,其余每个结点有且只有1个后续结点。

7. 在树形结构中,树根结点没有前驱结点,其余每个结点有且只有1个前驱结点;叶子结点没有后续结点,其余每个结点的后续结点数可以任意多个。

8. 在图形结构中,每个结点的前驱结点数和后续结点数可以任意多个。

9.数据的存储结构可用四种基本的存储方法表示,它们分别是顺序、链式、索引和散列。

10. 数据的运算最常用的有5种,它们分别是插入、删除、修改、查找、排序。

11. 一个算法的效率可分为时间效率和空间效率。

二、单项选择题(B)1. 非线性结构是数据元素之间存在一种:A)一对多关系 B)多对多关系C)多对一关系 D)一对一关系( C )2. 数据结构中,与所使用的计算机无关的是数据的结构;A) 存储 B) 物理C) 逻辑 D) 物理和存储(C)3. 算法分析的目的是:A) 找出数据结构的合理性B) 研究算法中的输入和输出的关系C) 分析算法的效率以求改进D) 分析算法的易懂性和文档性(A)4. 算法分析的两个主要方面是:A) 空间复杂性和时间复杂性B) 正确性和简明性C) 可读性和文档性D) 数据复杂性和程序复杂性(C )5. 计算机算法指的是:A) 计算方法B) 排序方法C) 解决问题的有限运算序列D) 调度方法(B)6. 计算机算法必须具备输入、输出和等5个特性。

数据结构总复习+习题+解答

数据结构总复习+习题+解答
双亲表示法孩子链表示法孩子兄弟表示法2树和二叉树之间的转换树的先根遍历二叉树的先序遍历树的后根遍历二叉树的中序遍历3树和森林之间的转换森林的先序中序和后序遍历与二叉树的先序中序和后序遍历一一对应63huffman1huffman树的构造过程2前缀码概念3计算带权路径长度
数据结构复习资料
数据结构总复习+习题解答
第一章 绪论
1.1 理解基本概念 1、数据是信息的载体,是描述客观事物的数、字符以及能输入到计算机中,被计算机识别 和处理的符号的集合。 2、数据元素是数据的基本单位,可由若干数据项组成。 3、数据对象是性质相同的数据元素的集合。 4、数据结构指某一数据元素集合中所有数据成员之间的关系,定义为: 数据结构={D,R} 5、数据结构三要素:逻辑结构,物理结构,作用于数据结构的运算。 6、逻辑结构:数据元素间的逻辑关系,分为线性结构和非线性结构(集合、树和图结构) 。 7、物理结构:数据元素及其关系在计算机上的映像,通常按顺序存储或链式存储。 8、抽象数据类型定义了一个数据对象,数据对象中各元素之间的关系以及一组处理数据的 操作。特征:数据抽象和信息隐藏。 9、数据类型和数据结构的异同: 同:它们都具有抽象性,并不特指适用于何处,可根据问题需要用他们来表示数据元 素间的关系。 异:数据结构本身是一种数据的组织和使用形式,通过把数据定义成数据类型才能在 计算机上使用。 1.2 算法特性与性能分析 1、算法的定义:解决特定问题的一系列操作。 2、算法的 5 大特性(要素) :输入、输出、确定性、可行性和有限性。 3、算法时间复杂度分析:寻找关键操作(基本操作,通常为循环的最内层程序段) ,计算关 键操作的执行次数,一般结果为问题规模 n 的多项式。时间复杂度为该多项式的最高次幂。 T(n)=O(1)的含义:常量时间复杂度,表示算法执行时间与问题规模无关。 4、算法空间复杂度分析:算法执行时所需要的辅助空间。 S(n)=O(1)的含义: 常量空间复杂度,表示算法执行时需要的辅助空间与问题规模无关,也 称为算法原地工作。 题 1.1 如何理解抽象数据类型。 答:定义了一个数据对象,数据对象中各元素之间的关系以及一组处理数据的操作。 题 1.2 数据元素间的逻辑结构关系有哪些。 答:四种。分别是集合结构、线性结构、树状结构、图状结构。 题 1.3 通常从时间复杂度和空间复杂度来评价算法的优劣。 题 1.4 下面算法的时间复杂度为(C) int i,j; for(i=0;i<m;i++) for(j=0;j<n;j++) a[i][j]=i*j;

数据结构课程课后习题集答案解析

数据结构课程课后习题集答案解析

《数据结构简明教程》练习题及参考答案练习题11. 单项选择题(1)线性结构中数据元素之间是()关系。

A.一对多B.多对多C.多对一D.一对一答:D(2)数据结构中与所使用的计算机无关的是数据的()结构。

A.存储B.物理C.逻辑D.物理和存储答:C(3)算法分析的目的是()。

A.找出数据结构的合理性B.研究算法中的输入和输出的关系C.分析算法的效率以求改进D.分析算法的易懂性和文档性答:C(4)算法分析的两个主要方面是()。

A.空间复杂性和时间复杂性B.正确性和简明性C.可读性和文档性D.数据复杂性和程序复杂性答:A(5)计算机算法指的是()。

A.计算方法B. 排序方法C.求解问题的有限运算序列D.调度方法答:C(6)计算机算法必须具备输入、输出和()等5个特性。

A.可行性、可移植性和可扩充性B.可行性、确定性和有穷性C.确定性、有穷性和稳定性D.易读性、稳定性和安全性答:B2. 填空题(1)数据结构包括数据的①、数据的②和数据的③这三个方面的内容。

答:①逻辑结构②存储结构③运算(2)数据结构按逻辑结构可分为两大类,它们分别是①和②。

答:①线性结构②非线性结构(3)数据结构被形式地定义为(D,R),其中D是①的有限集合,R是D上的②有限集合。

答:①数据元素②关系数据结构简明教程(4)在线性结构中,第一个结点 ① 前驱结点,其余每个结点有且只有1个前驱结点;最后一个结点 ② 后继结点,其余每个结点有且只有1个后继结点。

答:①没有 ②没有 (5)在树形结构中,树根结点没有 ① 结点,其余每个结点有且只有 ② 个前驱结点;叶子结点没有 ③ 结点,其余每个结点的后继结点数可以是 ④ 。

答:①前驱 ②1 ③后继 ④任意多个(6)在图形结构中,每个结点的前驱结点数和后继结点数可以是( )。

答:任意多个(7)数据的存储结构主要有四种,它们分别是 ① 、 ② 、 ③ 和 ④ 存储结构。

答:①顺序 ②链式 ③索引 ④哈希(8)一个算法的效率可分为 ① 效率和 ② 效率。

数据结构复习题集【耿国华(第二版)版C语

数据结构复习题集【耿国华(第二版)版C语

数据结构复习题集【耿国华(第语言描述】C版)二版.复习题第一章1.简述顺序存储结构与链式存储结构在表示数据元素之间关系上的主要区别。

答:在顺序结构中,逻辑关系上相邻的两个元素在物理位置上也相邻。

而链式存储结构中,数据元素之间关系是由结点中指针指示的。

2.数据结构是一门……的学科。

3.在数据结构中,从逻辑上可以把数据结构分成( C )。

A、动态结构与静态结构B、紧凑结构和非紧凑结构C、线性结构和非线性结构D、内部结构和外部结构4.编写一个函数,用不多于3n/2的平均比较次数,在一个数组中找出最大和最小值元素。

void maxmin(int a[],int n){max=min=a[0];for(i=1;i<n;i++){if(a[i]>max) max=a[i];else if(a[i]<min)min=a[i];}printf(“max=%d, min=%d”,max, min);}第二章复习题1.下述哪一条是顺序存储结构的优点?( A )A.存储密度大 B.插入运算方便C.删除运算方便 D.可方便地用于各种逻辑结构的存储表示2.下面关于线性表的叙述中,错误的是哪一个?( B )A.线性表采用顺序存储,必须占用一片连续的存储单元。

B.线性表采用顺序存储,便于进行插入和删除操作。

C.线性表采用链接存储,不必占用一片连续的存储单元。

D.线性表采用链接存储,便于插入和删除操作。

)的有限序列C 个(n.线性表是具有3.(n>=0)。

A.表元素 B.字符 C.数据元素 D.数据项4.若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用( A )存储方式最节省时间。

A.顺序表B.单循环链表C.带头结点的双循环链表 D.双链表5.某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用( D )存储方式最节省运算时间。

A.单链表 B.仅有头指针的单循环链表C.双链表 D.仅有尾指针的单循环链表6.若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点。

数据结构课后习题详解(超完整,超经典)

数据结构课后习题详解(超完整,超经典)

第1章 绪论1.1 简述下列术语:数据,数据元素、数据对象、数据结构、存储结构、数据类型和抽象数据类型。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 试仿照三元组的抽象数据类型分别写出抽象数据类型复数和有理数的定义(有理数是其分子、分母均为自然数且分母不为零的分数)。

解:ADT Complex{ 数据对象:D={r,i|r,i 为实数} 数据关系:R={<r,i>} 基本操作: InitComplex(&C,re,im)操作结果:构造一个复数C ,其实部和虚部分别为re 和im DestroyCmoplex(&C)操作结果:销毁复数C Get(C,k,&e) 操作结果:用e 返回复数C 的第k 元的值 Put(&C,k,e) 操作结果:改变复数C 的第k 元的值为eIsAscending(C)操作结果:如果复数C 的两个元素按升序排列,则返回1,否则返回0IsDescending(C)操作结果:如果复数C的两个元素按降序排列,则返回1,否则返回0 Max(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和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 RationalNumber1.5 试画出与下列程序段等价的框图。

数据结构习题(包含全部答案解析)

数据结构习题(包含全部答案解析)

数据结构习题(包含全部答案解析)数据结构习题(包含全部答案解析)1. 塔的问题题目描述:有三个塔,分别是A、B和C,A塔上有n个盘子,按照从小到大的顺序叠放。

现在要将这些盘子从A塔移动到C塔,并且每次只能移动一个盘子,并且在移动过程中保持大盘子在下,小盘子在上的顺序。

求移动的步骤。

解析:这道题可以使用递归来解决。

将问题分解为两个子问题:将n-1个盘子从A塔移动到B塔,然后将最后一个盘子从A塔移动到C 塔,最后再将n-1个盘子从B塔移动到C塔。

步骤如下:1)如果n等于1,直接将盘子从A塔移动到C塔;2)否则,执行以下步骤:a) 将n-1个盘子从A塔移动到B塔,使用C塔作为中转塔;b) 将最后一个盘子从A塔移动到C塔;c) 将n-1个盘子从B塔移动到C塔,使用A塔作为中转塔。

2. 链表问题题目描述:给定一个链表,判断链表是否存在环。

解析:这道题可以使用快慢指针的思想来解决。

定义两个指针fast和slow,初始时都指向链表的头节点。

fast指针每次向后移动两个节点,slow指针每次向后移动一个节点。

如果链表中存在环,则fast指针一定会在某个时刻追上slow指针。

步骤如下:1)定义两个指针fast和slow,初始时都指向链表的头节点;2)使用一个while循环,判断条件是fast指针不为空且其下一个节点也不为空;3)在循环中,fast指针每次向后移动两个节点,slow指针每次向后移动一个节点;4)如果fast指针和slow指针相遇,则链表存在环,返回true;5)如果fast指针和slow指针永远不相遇,则链表不存在环,返回false。

3. 栈的应用题目描述:给定一个只包含'('和')'的字符串,判断该字符串是否是有效的括号序列。

解析:这道题可以使用栈来解决。

遍历字符串的每一个字符,如果是左括号,将其压入栈中;如果是右括号,判断栈顶的字符是否与该右括号匹配,若匹配则出栈,若不匹配则该字符串不是有效的括号序列。

数据结构习题和答案及解析

数据结构习题和答案及解析

第 1 章绪论课后习题讲解1。

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

【解答】数据元素⑵()是数据的最小单位,()是讨论数据结构时涉及的最小数据单位。

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

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

【解答】集合,线性结构,树结构,图结构⑷数据的存储结构主要有( )和( )两种基本方法,不论哪种存储结构,都要存储两方面的内容:( )和()。

【解答】顺序存储结构,链接存储结构,数据元素,数据元素之间的关系⑸算法具有五个特性,分别是()、()、()、()、()。

【解答】有零个或多个输入,有一个或多个输出,有穷性,确定性,可行性⑹算法的描述方法通常有( )、()、( )和()四种,其中,()被称为算法语言。

【解答】自然语言,程序设计语言,流程图,伪代码,伪代码⑺在一般情况下,一个算法的时间复杂度是( )的函数。

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

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

2。

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

A 线性结构B 非线性结构C 存储位置D 指针【解答】C,D【分析】顺序存储结构就是用一维数组存储数据结构中的数据元素,其逻辑关系由存储位置(即元素在数组中的下标)表示;链接存储结构中一个数据元素对应链表中的一个结点,元素之间的逻辑关系由结点中的指针表示。

⑵假设有如下遗产继承规则:丈夫和妻子可以相互继承遗产;子女可以继承父亲或母亲的遗产;子女间不能相互继承。

则表示该遗产继承关系的最合适的数据结构应该是().A 树B 图C 线性表D 集合【解答】B【分析】将丈夫、妻子和子女分别作为数据元素,根据题意画出逻辑结构图.⑶算法指的是( )。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 试仿照三元组的抽象数据类型分别写出抽象数据类型复数和有理数的定义(有理数是其分子、分母均为自然数且分母不为零的分数)。

解:ADT Complex{ 数据对象:D={r,i|r,i 为实数} 数据关系:R={<r,i>} 基本操作: InitComplex(&C,re,im)操作结果:构造一个复数C ,其实部和虚部分别为re 和im DestroyCmoplex(&C)操作结果:销毁复数C Get(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 ComplexADT 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 RationalNumber1.5 试画出与下列程序段等价的框图。

数据结构题集答案

数据结构题集答案

数据结构题集第一章绪论一、单选题1.在数据结构中,从逻辑上可以把数据结构分成【C 】。

A。

动态结构和静态结构B。

紧凑结构和非紧凑结构C.线性结构和非线性结构D.内部结构和外部结构2.数据结构在计算机内存中的表示是指【A 】。

A.数据的存储结构B.数据结构C。

数据结构的逻辑结构 D.数据元素之间的关系3. 【A 】是数据的最小单位,【B 】是数据的基本单位。

A。

数据项B。

数据元素C.信息项D.表元素4。

计算机所处理数据一般具有某种内在联系,这是指【B 】.A.数据与数据之间存在某种关系B.数据元素与数据元素之间存在某种关系C.元素内部存在某种结构D.数据项与数据项之间存在某种关系5。

算法分析的目的是【C 】.A.找出数据结构的合理性B.研究输入和输出的关系C.分析算法的效率以求改进D。

分析算法的易懂性6。

在存储数据时,不仅要考虑存储各数据元素的值,而且还要存储【C 】。

A。

数据处理的方法B。

数据元素的类型C.数据元素之间的关系D。

数据的存储方法7.算法分析的主要任务是分析【D 】。

A.算法是否具有较好的可读性B。

算法中是否存储语法错误和逻辑错误C.算法的功能是否符合设计要求D.算法的执行时间与问题规模之间的关系。

8.数据的运算【A 】。

A.效率与采用何种存储结构有关B.是根据存储结构来定义的C.有算术运算和关系运算两大类D。

必须用程序设计语言来描述9.算法的计算量的大小称为算法的【B 】。

A.效率B。

时间复杂度 C.现实性 D.难度10.连续存储分配时,存储单元的地址【A 】。

A.一定连续B。

一定不连续C。

不一定连续 D.部分连续,部分不连续二、判断题1。

数据元素是数据结构的最小单位【.×】。

2。

数据的逻辑结构说明数据元素之间的顺序关系,它依赖于计算机的存储结构【×。

】.3.数据的逻辑结构指数据元素的各数据项之间的逻辑关系【×。

】。

4。

算法的优劣与算法的描述语言无关,但与使用的计算机有关【。

《数据结构》复习题及参考答案

《数据结构》复习题及参考答案

《数据结构》复习题及参考答案数据结构复习题及参考答案1. 什么是数据结构?数据结构是一种组织和存储数据的方式,它涉及到数据的组织方式、存储方式、访问方式以及对数据进行操作的算法等。

数据结构的选择对于解决不同类型的问题非常重要。

2. 数据结构有哪些常见的分类?数据结构可以分为以下几类:(1) 线性结构:线性结构是一种有序排列的数据结构,其中数据元素之间存在着一对一的关系。

常见的线性结构有数组、链表、栈和队列等。

(2) 非线性结构:非线性结构是一种数据元素之间存在多对多关系的结构,常见的非线性结构有树和图等。

(3) 逻辑结构:逻辑结构是指数据元素之间的逻辑关系,主要包括集合结构、线性结构、树形结构和图形结构等。

(4) 物理结构:物理结构是指数据的逻辑结构在计算机存储中的表示方式,主要包括顺序存储结构和链式存储结构等。

3. 什么是算法?算法是解决特定问题的一系列步骤或操作的有限序列。

一个算法通常包括输入、输出、基本操作、控制结构和定义算法执行的约定等。

4. 数据结构和算法之间的关系是什么?数据结构是算法的基础,而算法又依赖于数据结构。

只有选择合适的数据结构,才能实现高效的算法。

同时,算法的设计也会对数据结构的选择产生影响。

5. 请解释什么是时间复杂度和空间复杂度?时间复杂度是衡量算法执行时间消耗的度量,表示算法的运行时间与问题规模之间的关系。

通常用大O符号来表示时间复杂度,如O(n)、O(nlogn)等。

空间复杂度是衡量算法执行所需存储空间的度量,表示算法所需的额外空间与问题规模之间的关系。

同样也使用大O符号来表示,如O(1)、O(n)等。

6. 请简要描述以下数据结构的特点及应用场景:(1) 数组:数组是一种连续存储数据元素的线性结构,具有随机访问性能。

适用于知道元素位置的查找和修改操作。

(2) 链表:链表是一种通过指针连接的数据结构,具有插入、删除元素方便的特点。

适用于频繁插入、删除操作以及不知道具体位置的查找操作。

数据结构习题集含参考答案

数据结构习题集含参考答案

数据结构习题集含答案目录目录 (1)选择题 (2)第一章绪论 (2)第二章线性表 (4)第三章栈和队列 (6)第四章串 (9)第五章数组和广义表 (9)第六章树和二叉树 (10)第七章图 (13)第八章查找 (15)第九章排序 (17)简答题 (21)第一章绪论 (21)第二章线性表 (22)第三章栈和队列 (23)第四章串 (25)第六章树和二叉树 (25)第七章图 (29)第八章查找 (32)第九章排序 (33)编程题 (35)第一章绪论 (35)第二章线性表 (35)第三章栈和队列 (37)第四章串 (37)第五章数组和广义表 (37)第六章树和二叉树 (37)第七章图 (37)第八章查找 (37)第九章排序 (39)选择题第一章绪论1. 数据结构这门学科是针对什么问题而产生的?(A )A、针对非数值计算的程序设计问题B、针对数值计算的程序设计问题C、数值计算与非数值计算的问题都针对D、两者都不针对2. 数据结构这门学科的研究内容下面选项最准确的是(D )A、研究数据对象和数据之间的关系B、研究数据对象C、研究数据对象和数据的操作D、研究数据对象、数据之间的关系和操作3. 某班级的学生成绩表中查得张三同学的各科成绩记录,其中数据结构考了90分,那么下面关于数据对象、数据元素、数据项描述正确的是(C )A、某班级的学生成绩表是数据元素,90分是数据项B、某班级的学生成绩表是数据对象,90分是数据元素C、某班级的学生成绩表是数据对象,90分是数据项D、某班级的学生成绩表是数据元素,90分是数据元素4. 数据在计算机存储器内表示时,物理地址与逻辑地址不相同,称之为(C )。

A、存储结构B、逻辑结构C、链式存储结构D、顺序存储结构5. 算法分析的目的是(C )A、找出数据的合理性B、研究算法中的输入和输出关系C、分析算法效率以求改进D、分析算法的易懂性和文档型性6. 算法分析的主要方法(A )。

A、空间复杂度和时间复杂度B、正确性和简明性C、可读性和文档性D、数据复杂性和程序复杂性7. 计算机内部处理的基本单元是(B )A、数据B、数据元素C、数据项D、数据库8. 数据在计算机内有链式和顺序两种存储方式,在存储空间使用的灵活性上,链式存储比顺序存储要(B )。

数据结构题集答案全解

数据结构题集答案全解

数据结构题集答案全解(包括非算法题)12010-05-06 22:54 1220人阅读评论(1) 收藏举报1.1 简述下列概念:数据、数据元素、数据类型、数据结构、逻辑结构、存储结构、线性结构、非线性结构。

●数据:指能够被计算机识别、存储和加工处理的信息载体。

●数据元素:就是数据的基本单位,在某些情况下,数据元素也称为元素、结点、顶点、记录。

数据元素有时可以由若干数据项组成。

●数据类型:是一个值的集合以及在这些值上定义的一组操作的总称。

通常数据类型可以看作是程序设计语言中已实现的数据结构。

●数据结构:指的是数据之间的相互关系,即数据的组织形式。

一般包括三个方面的内容:数据的逻辑结构、存储结构和数据的运算。

●逻辑结构:指数据元素之间的逻辑关系。

●存储结构:数据元素及其关系在计算机存储器内的表示,称为数据的存储结构.●线性结构:数据逻辑结构中的一类。

它的特征是若结构为非空集,则该结构有且只有一个开始结点和一个终端结点,并且所有结点都有且只有一个直接前趋和一个直接后继。

线性表就是一个典型的线性结构。

栈、队列、串等都是线性结构。

●非线性结构:数据逻辑结构中的另一大类,它的逻辑特征是一个结点可能有多个直接前趋和直接后继。

数组、广义表、树和图等数据结构都是非线性结构。

1.2 试举一个数据结构的例子、叙述其逻辑结构、存储结构、运算三个方面的内容。

答:例如有一张学生体检情况登记表,记录了一个班的学生的身高、体重等各项体检信息。

这张登记表中,每个学生的各项体检信息排在一行上。

这个表就是一个数据结构。

每个记录(有姓名,学号,身高和体重等字段)就是一个结点,对于整个表来说,只有一个开始结点(它的前面无记录)和一个终端结点(它的后面无记录),其他的结点则各有一个也只有一个直接前趋和直接后继(它的前面和后面均有且只有一个记录)。

这几个关系就确定了这个表的逻辑结构是线性结构。

这个表中的数据如何存储到计算机里,并且如何表示数据元素之间的关系呢? 即用一片连续的内存单元来存放这些记录(如用数组表示)还是随机存放各结点数据再用指针进行链接呢? 这就是存储结构的问题。

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

数据结构题集答案数据结构题集第一章绪论一、单选题1.在数据结构中,从逻辑上可以把数据结构分成【 C 】。

A.动态结构和静态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构D.内部结构和外部结构2.数据结构在计算机内存中的表示是指【 A 】。

A.数据的存储结构B.数据结构C.数据结构的逻辑结构D.数据元素之间的关系3. 【 A 】是数据的最小单位,【 B 】是数据的基本单位。

A.数据项B.数据元素C.信息项D.表元素4. 计算机所处理数据一般具有某种内在联系,这是指【 B 】。

A.数据与数据之间存在某种关系B.数据元素与数据元素之间存在某种关系C.元素内部存在某种结构D.数据项与数据项之间存在某种关系5.算法分析的目的是【 C 】。

A.找出数据结构的合理性B.研究输入和输出的关系C.分析算法的效率以求改进D.分析算法的易懂性6.在存储数据时,不仅要考虑存储各数据元素的值,而且还要存储【 C 】。

A.数据处理的方法B.数据元素的类型C.数据元素之间的关系D.数据的存储方法7.算法分析的主要任务是分析【 D 】。

A.算法是否具有较好的可读性B.算法中是否存储语法错误和逻辑错误C.算法的功能是否符合设计要求D.算法的执行时间与问题规模之间的关系。

8.数据的运算【 A 】。

A.效率与采用何种存储结构有关B.是根据存储结构来定义的C.有算术运算和关系运算两大类D.必须用程序设计语言来描述9.算法的计算量的大小称为算法的【 B 】。

A.效率B.时间复杂度C.现实性D.难度10.连续存储分配时,存储单元的地址【A 】。

A.一定连续B.一定不连续C.不一定连续D.部分连续,部分不连续二、判断题1.数据元素是数据结构的最小单位【.×】。

2.数据的逻辑结构说明数据元素之间的顺序关系,它依赖于计算机的存储结构【×.】。

3.数据的逻辑结构指数据元素的各数据项之间的逻辑关系【×.】。

4.算法的优劣与算法的描述语言无关,但与使用的计算机有关【.×】。

5.数据结构的抽象操作的定义与具体实现有关【.×】。

三、填空题1.数据的逻辑结构指数据元素之间的逻辑关系。

2.一个数据结构在计算机中的表示称为存储结构。

3.数据的物理结构主要包括顺序存储结构的表示和链式存储结构的表示。

4.数据逻辑结构包括集合、线性结构、树和图四种,树结构和图结构统称为非线性结构。

5.顺序存储方法把逻辑上逻辑上相邻的元素存储在物理位置相邻的存储单元里;链式存储方法中结点间的逻辑关系是由指针域表示的。

6、数据结构研究的是逻辑结构和物理结构以及它们之间的相互关系,并对于这种结构定义相应的运算,设计出相应的算法。

7.算法的执行时间是问题规模n 的函数。

8.以下是4个算法所有语句频度之和的表达式,其中的复杂度相同的是 A和B 。

A.T A(n)=2n3+3n2+1000B.T B(n)=n3-n2log2n-1000C.T C(n)=n2log2n+n2D.T D(n)=n2+1000四、解答题1.简述数据的逻辑结构和存储结构的关系。

答:在数据结构中,逻辑结构和存储结构是密切相关的,存储结构不仅将数据元素存储到计算机中,而且还要表示各数据元素之间的逻辑关系。

逻辑结构与计算机无关,存储结构是数据元素之间的关系在计算机中的表示。

通常情况下,一种逻辑结构可以有多种存储结构,例如,线性结构可以采取顺序存储结构或链式存粗结构表示。

2.数据结构和数据类型有什么区别?答:数据结构是相互间存在一种或多种特定关系的数据元素的集合,一般包括三个方面的内容:数据的逻辑结构、存储结构和多数据的运算。

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

数据结构重点考虑元素之间的关系,数据类型重点考虑数据的个体特征。

3.当为解决某一问题已经选定其数据的逻辑结构后,选择数据的存储结构时,应从哪些方面考虑?答:通常从两个方面考虑:第一是算法实现的存储空间复杂度;第二是算法执行的时间复杂度。

若存储空间难以确定,宜选择链式存储结构,否则选择顺序存储结构。

若插入、删除操作频繁,则选链式存储结构,否则选择顺序存储结构。

第二章线性表一、单选题1.链表不具备的特点是【 A 】。

A.可随机访问任一结点B.插入删除不需要移动元素C.不必事先估算存储空间D.所需空间与其长度成正比2.设线性表有n个元素,以下操作中,【 A 】在顺序表上实现比在链表上实现效率更高。

A.输出第i(1≤i≤n)个元素的值B.顺序输出这n个元素C.交换第1个与第2个元素的值D.输出与给定值x相等的元素在线性表中的序号3.如果最常用的操作是取第i个结点及其前驱,则采用【 D 】存储方法最节省时间。

A.单链表B.双链表C.线性链表D.顺序表4.线性表是具有n个【 C 】的有限序列(n≥0)。

A.表元素B.字符C.数据元素D.数据项5.下面关于线性表的叙述中,错误的是【 B 】。

A.线性表采用顺序存储,则必须占用一片连续的存储单元B.线性表采用顺序存储,则便于插入和删除操作C.线性表采用链式存储,则不必占用一片连续的存储单元D.线性表采用链式存储,则便于插入和删除操作6. 线性表的顺序存储结构是一种【 A 】。

A.随机存取的存储结构B.顺序存取的存储结构C.索引存取的存储结构D.Hash存取的存储结构7.单链表中增加一个头结点的目的是为了【 C 】。

A.使单链表至少有一个结点B.标识表首结点的位置C.方便运算的实现D.说明单链表是线性表的链式存储8.不带头结点的单链表(头指针为h)为空的条件是【 A 】。

A.h==NULLB.h->next==NULLC.h->next==hD.h!=NULL9. 带头结点的单链表(头指针为h)为空的条件是【 B 】。

A.h==NULLB.h->next==NULLC.h->next==hD.h!=NULL10.带头结点的循环双向链表(头指针为L)为空的条件是【 D 】。

A.L==NULLB.L->next->prior==NULLC.L->prior==NULLD.L->next==L11.非空的循环单链表(头指针为head)的尾结点(由p指向)满足【 C 】。

A.p->next==NULLB.p==NULLC.p->next==headD.p==head12.设一个链表最常用的操作是在末尾插入结点和删除尾结点,则选用【 A 】最节省时间。

A.带头结点的双循环链表B.单循环链表C.带尾指针的单循环链表D.单链表13.若某线性表最常用的操作存取任意指定序号的元素和在表尾进行插入和删除,则选用【 A 】的存储方式最节省时间。

A.顺序表B.双链表C.带头结点的双循环链表D.单循环链表14.在n个结点的线性表的顺序实现中,算法的时间复杂度为O(1)的操作是【 A】。

A.访问第i个结点和求第i个结点的直接前驱B.在第i个结点后插入一个新结点C.删除第i个结点D.以上都不对15.若长度为n的线性表采用顺序存储结构,在第i个位置插入一个新元素的算法的时间复杂度为【 C 】。

A.O(0)B.O(1)C.O(n)D.O(n2)16.对于顺序存储的线性表,访问结点和增加、删除结点的时间复杂度为【 C 】。

A.O(n)O(n)B.O(n)O(1)C.O(1)O(n)D.O(1)O(1)17. 线性表以链式方式存储,访问第i个结点的时间复杂度为【 C 】。

A.O(i)B.O(1)C.O(n)D.O(i-1)18.循环链表H尾结点p的特点是【 A 】。

A.p->next==HB.p->next==H->nextC.p==HD.p==H->next二、判断题【×】1.取线性表的第i个元素的时间同i的大小有关。

【×】2.线性表中每个元素都有一个直接前驱和一个直接后继。

【×】3.顺序存储方式只能用于存储线性结构。

【×】4.线性表采用链式存储时,结点和结点内部的存储空间可以不连续。

【×】5.在一个设有头指针和尾指针的单链表中,执行删除单链表最后一个结点的操作与链表的长度无关。

三、填空题1.向一个长度为n的顺序表中的第i个元素之前插入一个元素时,需要向后移动 n-i+1 个元素。

2. 在一个长度为n的顺序表中删除第i个元素时,需要向前移动 n-i 个元素。

3.在单链表中设置头结点的作用是简化插入、删除算法。

4.在单链中要删除某一指定结点,必须找到该结点的直接前驱结点。

5. 访问单链表中的结点,必须沿着指针域依次进行。

6.在双链表中每个结点有两个指针域,一个指向直接前驱结点,一个指向直接后继结点。

7.在双向循环链表中,删除最后一个结点的算法时间复杂度为O(1)。

8.访问一个线性表中具有给定值的时间复杂度的数量级是 O(n) 。

9.由n个数据元素生成一个顺序表,若每次都调用插入算法把一个元素插入到表头,则整个算法的时间复杂度为 O(n) ,若每次都调用插入算法把一个元素插入到表尾,则整个算法的时间复杂度为 O(n2) 。

10. 在双向链表中,可以用表尾指针代替表头指针。

11.根据n个数据元素建立对应的顺序表和单链表存储结构,其算法的时间复杂度最好的情况是 O(n) ,最坏的情况是 O(n2) 。

12.求线性表的顺序存储和链式存储的长度的算法时间复杂度分别是 O(1) 和 O(n) 。

13.在一个带头结点的单链表中,在表头插入或删除与在其他位置插入或删除,其操作过程是否相同?相同。

14.在一个不带头结点的单链表中,在表头插入或删除与在其他位置插入或删除,其操作过程是否相同?不相同。

四、简答题1.阐述顺序表和链表存储方式的特点。

答:顺序表存储方式为数据分配连续的存储单元,数据元素按逻辑顺序依次存储到相应存储单元中,使得逻辑相邻的数据元素物理也相邻,因此可以实现随机访问线性表的数据元素,即数据访问的时间复杂度为O(1)。

链表存储方式分配的存储单元可以不连续,通过每个结点的指针域来表示数据元素之间的逻辑关系,只能顺序访问线性表中的数据元素。

2. 若频繁地对一个线性表进行插入和删除操作,则该线性表宜采用何种存储结构,为什么?答:若频繁地对一个线性表进行插入和删除操作,则该线性表宜采用链式存储结构。

因为链式存储结构在插入和删除数据元素时不需要移动数据元素,只需要修改结点的指针域就可以改变数据元素之间的逻辑关系。

3.在单链表、双向循环链表和单循环链表中,若仅知道指针p指向某结点,不知道头指针,能否将结点p从相应的链表中删除?若可以,时间复杂度各为多少。

答:要实现删除p结点的操作,必须找到其前驱结点,修改其指针域的值使其指向p的后继结点,以实现删除结点p。

相关文档
最新文档