《数据结构基础教程》习题及解答
数据结构课后习题及解析第一章
![数据结构课后习题及解析第一章](https://img.taocdn.com/s3/m/00a896fa7d1cfad6195f312b3169a4517723e51d.png)
数据结构课后习题及解析第一章第一章习题一、问答题1.什么是数据结构?2.叙述四类基本数据结构的名称与含义。
3.叙述算法的定义与特性。
4.叙述算法的时间复杂度。
5.叙述数据类型的概念。
6.叙述线性结构与非线性结构的差别。
7.叙述面向对象程序设计语言的特点。
8.在面向对象程序设计中,类的作用是什么?9.叙述参数传递的主要方式及特点。
10.叙述抽象数据类型的概念。
二、判断题(在各题后填写“√”或“某”)1.线性结构只能用顺序结构来存放,非线性结构只能用非顺序结构来存放。
()2.算法就是程序。
()3.在高级语言(如C或PASCAL)中,指针类型是原子类型。
()三、计算下列程序段中某=某+1的语句频度for(i=1;i<=n;i++)for(j=1;j<=i;j++)for(k=1;k<=j;k++)某=某+1;四、试编写算法,求一元多项式Pn(某)=a+a某+a2某2+a3某3+…an某n的值Pn(某),并确定算法中的每一语句的执行次数和整个算法的时间复杂度,要求时间复杂度尽可能小,规定算法中不能使用求幂函数。
注意:本题中的输入ai(i=0,1,…,n),某和n,输出为Pn(某)。
通常算法的输入和输出可采用下列两种方式之一:(1)通过参数表中的参数显式传递。
(2)通过全局变量隐式传递。
试讨论这两种方法的优缺点,并在本题算法中以你认为较好的一种方式实现输入和输出。
实习题设计实现抽象数据类型“有理数”。
基本操作包括有理数的加法、减法、乘法、除法,以及求有理数的分子、分母。
第一章答案1.3计算下列程序中某=某+1的语句频度for(i=1;i<=n;i++)for(j=1;j<=i;j++)for(k=1;k<=j;k++)某=某+1;【解答】某=某+1的语句频度为:T(n)=1+(1+2)+(1+2+3)+……+(1+2+……+n)=n(n+1)(n+2)/61.4试编写算法,求pn(某)=a0+a1某+a2某2+…….+an某n的值pn(某0),并确定算法中每一语句的执行次数和整个算法的时间复杂度,要求时间复杂度尽可能小,规定算法中不能使用求幂函数。
《数据结构基础教程》习题及解答
![《数据结构基础教程》习题及解答](https://img.taocdn.com/s3/m/2211b33377c66137ee06eff9aef8941ea66e4b4f.png)
《数据结构基础教程》习题及解答数据结构基础教程习题及解答第一章:数据结构简介1.1 什么是数据结构?数据结构是指相互之间存在一种或多种特定关系的数据元素的集合,包括数据的逻辑结构、物理结构和数据元素之间的运算。
1.2 数据的逻辑结构有哪些?数据的逻辑结构包括线性结构、树形结构和图状结构。
1.3 数据的物理结构有哪些?数据的物理结构包括顺序存储结构和链式存储结构。
1.4 数据结构的主要目标是什么?数据结构的主要目标是提高数据的存储效率和运算效率。
第二章:线性表2.1 线性表的定义线性表是由n(≥0)个数据元素组成的有限序列。
线性表是一种常见的数据结构,常用的实现方式包括数组和链表。
2.2 线性表的顺序存储结构线性表的顺序存储结构是将线性表中的元素存储在连续的存储空间中,通过元素在内存中的物理位置来表示元素之间的关系。
2.3 线性表的链式存储结构线性表的链式存储结构是通过指针将线性表中的元素连接在一起,每个元素包括数据域和指针域。
2.4 线性表的基本操作包括初始化线性表、插入元素、删除元素、查找元素等。
第三章:栈与队列3.1 栈的定义与特性栈是一种具有后进先出特性的线性表,只允许在一端进行插入和删除操作,被称为栈顶。
3.2 栈的顺序存储结构和链式存储结构栈的顺序存储结构和链式存储结构与线性表的存储结构类似,不同之处在于栈只允许在一端进行插入和删除操作。
3.3 栈的应用栈在表达式求值、函数调用和递归等场景中有广泛应用。
3.4 队列的定义与特性队列是一种具有先进先出特性的线性表,允许在一端插入元素,在另一端删除元素。
3.5 队列的顺序存储结构和链式存储结构队列的顺序存储结构和链式存储结构与线性表的存储结构类似,不同之处在于队列允许在一端插入元素,在另一端删除元素。
3.6 队列的应用队列在模拟排队系统、操作系统进程调度等场景中有广泛应用。
第四章:树与二叉树4.1 树的基本概念树是由n(≥0)个节点组成的有限集合,其中有一个称为根节点,除了根节点之外的其余节点被分为m(m≥0)个互不相交的集合,每个集合本身又是一棵树。
最新版《数据结构》各章习题及答案
![最新版《数据结构》各章习题及答案](https://img.taocdn.com/s3/m/e8ec8488b1717fd5360cba1aa8114431b90d8e6d.png)
最新版《数据结构》各章习题及答案第一章绪论一、选择题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.在树形结构中,树根结点没有_______ 结点,其余每个结点有且只有_______个前驱结点;叶子结点没有 ________ 结点,其余每个结点的后续结点可以_________。
数据结构题库及答案详解
![数据结构题库及答案详解](https://img.taocdn.com/s3/m/99a3b7ec64ce0508763231126edb6f1afe007164.png)
数据结构题库及答案详解一、选择题1. 在数据结构中,线性结构的特点是什么?A. 结构中存在唯一的开始结点和终端结点B. 结构中所有结点的前驱和后继都存在C. 结构中所有结点都只有一个直接前驱和一个直接后继D. 结构中存在多个开始结点和终端结点答案:C2. 栈是一种特殊的线性表,其特点是:A. 先进先出B. 先进后出C. 可以同时在两端进行插入和删除操作D. 只能在一端进行插入和删除操作答案:D3. 在二叉树的遍历算法中,先序遍历的顺序是:A. 先访问根结点,然后遍历左子树,最后遍历右子树B. 先遍历左子树,然后访问根结点,最后遍历右子树C. 先遍历右子树,然后访问根结点,最后遍历左子树D. 先遍历左右子树,最后访问根结点答案:A二、填空题4. 在图的遍历中,______算法可以避免重复访问同一顶点。
5. 哈希表的冲突可以通过______方法来解决。
答案:4. 深度优先搜索(DFS)5. 链地址法或开放地址法三、简答题6. 简述排序算法中的快速排序算法的基本原理。
答案:快速排序算法是一种分治算法,它通过选择一个元素作为“基准”,然后将数组分为两个子数组,一个包含小于基准的元素,另一个包含大于基准的元素。
然后对这两个子数组递归地应用快速排序算法。
7. 解释什么是递归,并给出一个递归函数的例子。
答案:递归是一种在函数中调用自身的编程技术。
递归函数必须有一个明确的终止条件,以避免无限递归。
例如,计算阶乘的递归函数如下:```int factorial(int n) {if (n == 0) return 1; // 终止条件return n * factorial(n - 1); // 递归调用}```四、编程题8. 编写一个函数,实现单链表的反转。
答案:```c// 假设ListNode是链表节点的定义ListNode* reverseList(ListNode* head) {ListNode* prev = NULL;ListNode* curr = head;ListNode* next = NULL;while (curr != NULL) {next = curr->next; // 保存下一个节点curr->next = prev; // 反转指针prev = curr; // 移动prevcurr = next; // 移动curr}return prev; // 新的头节点}```9. 给定一个整数数组,请实现一个函数来找到数组中的最长连续子序列的长度。
数据结构习题(包含全部答案解析)
![数据结构习题(包含全部答案解析)](https://img.taocdn.com/s3/m/2bc74635f78a6529647d537f.png)
数据结构习题集(自编)第一章绪论一、选择题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、数据元素是数据的______,有些情况下也称为元素、结点、顶点、记录等。
《数据结构基础教程》习题及解答
![《数据结构基础教程》习题及解答](https://img.taocdn.com/s3/m/69992c37f111f18583d05a25.png)
《数据结构基础教程》习题解答(新)第1章习题解答一、填空1.数据是指所有能够输入到计算机中被计算机加工、处理的符号的集合。
2.可以把计算机处理的数据,笼统地分成数值型和非数值型两大类。
3.数据的逻辑结构就是指数据间的邻接关系。
4.数据是由一个个数据元素集合而成的。
5.数据项是数据元素中不可再分割的最小标识单位,通常不具备完整、确定的实际意义,只是反映数据元素某一方面的属性。
6.数据是以数据元素为单位存放在内存的,分配给它的内存区域称为存储结点。
7.每个数据元素都具有完整、确定的实际意义,是数据加工处理的对象。
8.如果两个数据结点之间有着逻辑上的某种关系,那么就称这两个结点是邻接的。
9.在一个存储结点里,除了要有数据本身的内容外,还要有体现数据间邻接关系的内容。
10.从整体上看,数据在存储器内有两种存放的方式:一是集中存放在一个连续的内存存储区中;一是利用存储器中的零星区域,分散地存放在内存的各个地方。
11.在有些书里,数据的“存储结构”也称为数据的“物理结构”。
12.“基本操作”是指算法中那种所需时间与操作数的具体取值无关的操作。
二、选择1.在常见的数据处理中,B 是最基本的处理。
A.删除B.查找C.读取D.插入2.下面给出的名称中,A 不是数据元素的同义词。
A.字段B.结点C.顶点D.记录3.D 是图状关系的特例。
A.只有线性关系B.只有树型关系C.线性关系和树型关系都不D.线性关系和树型关系都4.链式存储结构中,每个数据的存储结点里D指向邻接存储结点的指针,用以反映数据间的逻辑关系。
A.只能有1个B.只能有2个C.只能有3个D.可以有多个5.本书将采用C 来描述算法。
A.自然语言B.流程图(即框图)C.类C语言D.C语言6.有下面的算法段:for (i=0; i<n; i++)k++;其时间复杂度为B 。
A.O(1) B.O(n) C.O(log2n) D.O(n2)三、问答1.中国百家姓中的赵、钱、孙、李、周、吴、郑、王……等姓氏数据之间,是一种什么样的邻接关系,为什么?答:是一种线性关系,因为这些姓氏之间符合关系的“有头有尾,顺序排列”的特点。
数据结构习题(包含全部答案解析)
![数据结构习题(包含全部答案解析)](https://img.taocdn.com/s3/m/2f43b33153ea551810a6f524ccbff121dd36c5cc.png)
数据结构习题(包含全部答案解析)数据结构习题(包含全部答案解析)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. 栈的应用题目描述:给定一个只包含'('和')'的字符串,判断该字符串是否是有效的括号序列。
解析:这道题可以使用栈来解决。
遍历字符串的每一个字符,如果是左括号,将其压入栈中;如果是右括号,判断栈顶的字符是否与该右括号匹配,若匹配则出栈,若不匹配则该字符串不是有效的括号序列。
数据结构教程,含习题和答案
![数据结构教程,含习题和答案](https://img.taocdn.com/s3/m/943956daa58da0116c174912.png)
第一章:概论(包括习题与答案及要点)本章的重点是了解数据结构的逻辑结构、存储结构、数据的运算三方面的概念及相互关系,难点是算法复杂度的分析方法。
需要达到<识记>层次的基本概念和术语有:数据、数据元素、数据项、数据结构。
特别是数据结构的逻辑结构、存储结构及数据运算的含义及其相互关系。
数据结构的两大类逻辑结构和四种常用的存储表示方法。
需要达到<领会>层次的内容有算法、算法的时间复杂度和空间复杂度、最坏的和平均时间复杂度等概念,算法描述和算法分析的方法、对一般的算法要能分析出时间复杂度。
-------------------------------------------------------------------------------- 对于基本概念,仔细看书就能够理解,这里简单提一下:数据就是指能够被计算机识别、存储和加工处理的信息的载体。
数据元素是数据的基本单位,有时一个数据元素可以由若干个数据项组成。
数据项是具有独立含义的最小标识单位。
如整数这个集合中,10这个数就可称是一个数据元素.又比如在一个数据库(关系式数据库)中,一个记录可称为一个数据元素,而这个元素中的某一字段就是一个数据项。
数据结构的定义虽然没有标准,但是它包括以下三方面内容:逻辑结构、存储结构、和对数据的操作。
这一段比较重要,我用自己的语言来说明一下,大家看看是不是这样。
比如一个表(数据库),我们就称它为一个数据结构,它由很多记录(数据元素)组成,每个元素又包括很多字段(数据项)组成。
那么这张表的逻辑结构是怎么样的呢? 我们分析数据结构都是从结点(其实也就是元素、记录、顶点,虽然在各种情况下所用名字不同,但说的是同一个东东)之间的关系来分析的,对于这个表中的任一个记录(结点),它只有一个直接前趋,只有一个直接后继(前趋后继就是前相邻后相邻的意思),整个表只有一个开始结点和一个终端结点,那我们知道了这些关系就能明白这个表的逻辑结构了。
数据结构习题和答案及解析
![数据结构习题和答案及解析](https://img.taocdn.com/s3/m/e1d821d3aaea998fcc220ef0.png)
第 1 章绪论课后习题讲解1。
填空⑴( )是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。
【解答】数据元素⑵()是数据的最小单位,()是讨论数据结构时涉及的最小数据单位。
【解答】数据项,数据元素【分析】数据结构指的是数据元素以及数据元素之间的关系。
⑶从逻辑关系上讲,数据结构主要分为()、()、( )和()。
【解答】集合,线性结构,树结构,图结构⑷数据的存储结构主要有( )和( )两种基本方法,不论哪种存储结构,都要存储两方面的内容:( )和()。
【解答】顺序存储结构,链接存储结构,数据元素,数据元素之间的关系⑸算法具有五个特性,分别是()、()、()、()、()。
【解答】有零个或多个输入,有一个或多个输出,有穷性,确定性,可行性⑹算法的描述方法通常有( )、()、( )和()四种,其中,()被称为算法语言。
【解答】自然语言,程序设计语言,流程图,伪代码,伪代码⑺在一般情况下,一个算法的时间复杂度是( )的函数。
【解答】问题规模⑻设待处理问题的规模为n,若一个算法的时间复杂度为一个常数,则表示成数量级的形式为(),若为n*log25n,则表示成数量级的形式为()。
【解答】Ο(1),Ο(nlog2n)【分析】用大O记号表示算法的时间复杂度,需要将低次幂去掉,将最高次幂的系数去掉。
2。
选择题⑴顺序存储结构中数据元素之间的逻辑关系是由( )表示的,链接存储结构中的数据元素之间的逻辑关系是由()表示的。
A 线性结构B 非线性结构C 存储位置D 指针【解答】C,D【分析】顺序存储结构就是用一维数组存储数据结构中的数据元素,其逻辑关系由存储位置(即元素在数组中的下标)表示;链接存储结构中一个数据元素对应链表中的一个结点,元素之间的逻辑关系由结点中的指针表示。
⑵假设有如下遗产继承规则:丈夫和妻子可以相互继承遗产;子女可以继承父亲或母亲的遗产;子女间不能相互继承。
则表示该遗产继承关系的最合适的数据结构应该是().A 树B 图C 线性表D 集合【解答】B【分析】将丈夫、妻子和子女分别作为数据元素,根据题意画出逻辑结构图.⑶算法指的是( )。
《数据结构》教材课后习题+答案
![《数据结构》教材课后习题+答案](https://img.taocdn.com/s3/m/f346565b1fd9ad51f01dc281e53a580216fc50fc.png)
《数据结构》教材课后习题+答案数据结构第一章介绍数据结构是计算机科学中重要的概念,它涉及到组织和存储数据的方法和技术。
数据结构的选择对于算法的效率有着重要的影响。
本教材为读者提供了丰富的课后习题,以帮助读者巩固所学知识并提高解决问题的能力。
下面是一些选定的习题及其答案,供读者参考。
第二章线性表习题一:给定一个顺序表L,编写一个算法,实现将其中元素逆置的功能。
答案一:算法思路:1. 初始化两个指针i和j,分别指向线性表L的首尾两个元素2. 对于L中的每一个元素,通过交换i和j所指向的元素,将元素逆置3. 当i>=j时,停止逆置算法实现:```pythondef reverse_list(L):i, j = 0, len(L)-1while i < j:L[i], L[j] = L[j], L[i]i += 1j -= 1```习题二:给定两个线性表A和B,编写一个算法,将线性表B中的元素按顺序插入到线性表A中。
答案二:算法思路:1. 遍历线性表B中的每一个元素2. 将B中的元素依次插入到A的末尾算法实现:```pythondef merge_lists(A, B):for element in B:A.append(element)```第三章栈和队列习题一:编写一个算法,判断一个表达式中的括号是否匹配。
表达式中的括号包括小括号"()"、中括号"[]"和大括号"{}"。
答案一:算法思路:1. 遍历表达式中的每一个字符2. 当遇到左括号时,将其推入栈中3. 当遇到右括号时,判断栈顶元素是否与其匹配4. 当遇到其他字符时,继续遍历下一个字符5. 最后判断栈是否为空,若为空则表示括号匹配算法实现:```pythondef is_matching(expression):stack = []for char in expression:if char in "([{":stack.append(char)elif char in ")]}":if not stack:return Falseelif (char == ")" and stack[-1] == "(") or (char == "]" and stack[-1] == "[") or (char == "}" and stack[-1] == "{"):stack.pop()else:return Falsereturn not stack```习题二:利用两个栈实现一个队列。
数据结构考试题及答案详解
![数据结构考试题及答案详解](https://img.taocdn.com/s3/m/b833057ebc64783e0912a21614791711cc7979b9.png)
数据结构考试题及答案详解一、选择题(每题2分,共20分)1. 在数据结构中,线性表的顺序存储结构通常使用哪种数据结构实现?A. 链表B. 数组C. 栈D. 队列答案:B2. 下列哪个是二叉树的遍历算法?A. 深度优先搜索B. 广度优先搜索C. 排序算法D. 查找算法答案:A3. 哈希表解决冲突最常用的方法是?A. 链接法B. 线性探测法C. 二次探测法D. 所有选项都是答案:D4. 栈的后进先出(LIFO)特性决定了它不能用于实现哪些数据结构?A. 队列B. 堆C. 树D. 图答案:A5. 快速排序算法的时间复杂度在最坏情况下是?A. O(n log n)B. O(n^2)C. O(n)D. O(1)答案:B二、简答题(每题10分,共30分)1. 什么是递归?请给出一个递归函数的例子。
答案:递归是一种在函数内部调用自身的编程技术。
递归函数通常有两个条件:一个基本情况(base case),用于停止递归调用;一个递归情况(recursive case),用于进行递归调用。
例如,计算阶乘的递归函数如下:```cint factorial(int n) {if (n == 0) return 1; // 基本情况return n * factorial(n - 1); // 递归情况}```2. 什么是图的深度优先搜索(DFS)?请简述其基本思想。
答案:深度优先搜索是一种遍历图的算法,它从一个顶点开始,沿着一条路径尽可能深地搜索,直到无法继续为止,然后回溯并沿着另一条路径继续搜索。
基本思想是使用一个栈来记录已访问的顶点,以避免重复访问。
3. 什么是平衡二叉搜索树?请列举至少两种常见的平衡二叉搜索树。
答案:平衡二叉搜索树是一种特殊的二叉搜索树,它保持树的高度尽可能低,以保证操作的效率。
常见的平衡二叉搜索树有AVL树和红黑树。
AVL树通过旋转操作保持平衡,红黑树通过颜色和旋转操作来保持平衡。
三、计算题(每题25分,共50分)1. 给定一个数组A,包含n个元素,请计算其归并排序的时间复杂度,并给出排序过程的一个示例。
数据结构的试题及答案
![数据结构的试题及答案](https://img.taocdn.com/s3/m/67e4d29e710abb68a98271fe910ef12d2bf9a918.png)
数据结构的试题及答案一、选择题(每题2分,共10分)1. 在数据结构中,()是数据元素之间的相互关系的集合。
A. 数据B. 结构C. 存储结构D. 逻辑结构答案:D2. 线性表的顺序存储结构中,存储元素的物理位置是()。
A. 连续的B. 离散的C. 任意的D. 无关的答案:A3. 在二叉树的遍历方法中,先访问根节点,然后遍历左子树,最后遍历右子树的遍历方式是()。
A. 前序遍历B. 中序遍历C. 后序遍历D. 层序遍历答案:A4. 哈希表的冲突解决方法中,()是将所有发生冲突的元素存储在同一个链表中。
A. 线性探测B. 链地址法C. 再散列D. 双散列答案:B5. 在图的遍历算法中,深度优先搜索(DFS)算法使用的辅助数据结构是()。
A. 栈B. 队列C. 链表D. 数组答案:A二、填空题(每题2分,共10分)1. 在数据结构中,算法的时间复杂度通常用()表示。
答案:O(n)2. 一个栈的初始状态为空,依次执行了Push(1), Push(2), Pop(), Push(3), Pop()操作后,栈顶元素是()。
答案:13. 在二叉搜索树中,对于任意节点,其左子树中的所有值都()该节点的值。
答案:小于4. 哈希表的装载因子是表中已填入的元素个数与哈希表的()之比。
答案:总容量5. 图的邻接矩阵表示法中,如果两个顶点之间有边相连,则对应的矩阵元素值为()。
答案:1三、简答题(每题5分,共20分)1. 请简述什么是递归,并给出一个递归算法的例子。
答案:递归是一种算法设计技巧,它允许一个函数直接或间接地调用自身。
递归算法的例子是计算阶乘:n! = n * (n-1)!,其中n! = 1当n=0时。
2. 请解释什么是堆排序,并简述其基本步骤。
答案:堆排序是一种基于堆数据结构的比较排序算法。
基本步骤包括构建最大堆,然后重复移除堆顶元素并调整剩余元素以保持最大堆属性。
3. 请描述什么是图的广度优先搜索(BFS)算法,并给出其算法步骤。
数据结构习题(含答案)
![数据结构习题(含答案)](https://img.taocdn.com/s3/m/d7aae1c45ef7ba0d4a733b61.png)
第一章绪论一、填空题1.数据是描述客观事物的数、字符以及所有能输入到计算机且能够被计算机程序加工处理的符号集合。
_________是数据的基本单位;___________是数据的最小单位。
通常被计算机加工处理的数据不是孤立无关的,而是彼此之间存在着某种联系,将这种数据间的联系称为________。
2.数据结构进行形式化定义时,可以从逻辑上认为数据结构DS是_________的集合D和D上_________的集合R所构成的二元组:DS=(D,R)。
3.已知某数据结构的二元组形式表示为:A=(D,R),D={01,02,03,04,05,06,07,08,09},R={r},r={<01,02>,<01,03>,<01,04>,<02,05>,<02,06>,<03,07>,<03,08>,<03,09>}。
则此数据结构属于_____________结构。
4.一个算法的时间复杂度通常用问题规模大小的函数来表示,当一个算法的时间复杂度与问题规模n大小无关时,则表示为__________;成正比关系时,则表示为___________;成对数关系时,则表示为___________;成平方关系时,则表示为__________。
5.数据结构的逻辑结构包括_____________、树型结构和图型结构三种类型,其中树型结构和图型结构合称为_____________;数据结构的存储结构主要包括____________和____________两种类型。
6.线性结构的特点是:第一个结点_______前驱结点,其余结点有且仅有_______个前驱结点;最后一个结点_______后继结点,其余每个结点有且仅有_______个后继结点。
7.树型结构的特点是:根结点没有________结点,其余每个结点有且仅有________个前驱结点;叶子结点_________后继结点,其余结点可以有_________个后继结点。
数据结构课后习题及答案
![数据结构课后习题及答案](https://img.taocdn.com/s3/m/8862f2d4eefdc8d377ee322d.png)
填空题(10 * 1 '= 10')一、概念题.当对一个线性表经常进行的是插入和删除操作时,采用链式存储结构为宜。
.当对一个线性表经常进行的是存取操作,而很少进行插入和删除操作时,最好采用顺序存储结构。
.带头结点的单链表 L 中只有一个元素结点的条件是 .循环队列的引入,目的是为了克服假溢出。
.长度为0的字符串称为空串。
.组成串的数据元素只能是字符。
.设T 和P 是两个给定的串,在 T 中寻找等于P 的子串的过程称为模式匹配 .为了实现图的广度优先搜索,除一个标志数组标志已访问的图的结点外,还需要队列存放被访问的结点实现遍历。
.广义表的深度是广义表中括号的重数.有向图G 可拓扑排序的判别条件是有无回路。
.若要求一个稠密图的最小生成树,最好用O.抽象数据类型的定义仅取决于它的一组逻辑特性,而与存储结构无关,即不论其内部结构如何变化,只要它的 数学特性不变,都不影响其外部使用。
.一个算法具有五大特性:有穷性、确定性、可行性,有零个或多个输入、有一个或多个输入。
.在双向链表结构中,若要求在p 指针所指的结点之前插入指针为s 所指的结点,则需执行下列语句:>prior= p>prior; s->next= p; p>prior- next= s; p>prior= s;.队列是限制在表的一端进行插入和在另一端进行删除的线性表,其运算遵循先进先出原则。
.栈是限定尽在表位进行插入或删除操作的线性表。
.在链式队列中,判定只有一个结点的条件是 (Q->rear==Q->front)&&(Q->rear!=NULL).已知链队列的头尾指针分别是p>n ext=NULL; if(r) {r->n ext=p; r=p;} else {r=p; f=p;} .循环队列的满与空的条件是(rear+1)%MAXSIZE==fornt 和(front=-1 &&rear+1==MAXSIZE).串是一种特殊的线性表,其特殊性表现在数据元素都是由字符组成。
《数据结构基础教程》部分题答案
![《数据结构基础教程》部分题答案](https://img.taocdn.com/s3/m/3a289515866fb84ae45c8d5a.png)
《数据结构基础教程》部分题答案 第一章: 一、填空题1、 线性结构、树结构、图结构、非线性结构2、 一对一、一对多、多对多3、 无、一、无、多4、 多个、多个5、 数据元素、数据项6、 有穷性、确定性、可行性、输入、输出7、 数据表示、关系8、 逻辑结构、物理结构9、 顺序映像、链式映像 二、选择题1. A2. C3.C4. D5. D6. A 三、分析题1. n m ⨯ )(n m O ⨯2. ⎥⎥⎤⎢⎢⎡++-2811n )(n O3.22)1(++nn )(2n O第二章: 一、选择题1. B2. A3. C4. D5. A6. B (题目修正:“已知指针q 所指结点是指针结点的直接前驱”应改为“已知指针q 所指结点是p 指向结点的直接前驱”)7. B8. A9. A 二、填空题1、 顺序表、链表2、 同一类型、线性关系3、 1+-i n )1(O 随机存取4、 随机存储、存储密度高5、 不需要移动数据元素、插入删除元素6、2n插入位置 7、 21-n 删除位置8、 p 的直接前驱 )(n O 9、 p 的直接前驱 )(n O 10、 一定、不一定第三章:一、选择题1.C2.B3.B4.D5.B6.D7.C8.A 二、填空题1. 移动栈顶指针,存入元素2. ls==NULL ,ls=ls->link3.栈顶,栈底4. 顺序栈,链栈5. 先进后出6. --,++7. 栈顶,栈底8. 栈空,下溢,栈满,上溢 9. 栈10. top==NULL; 三、简答题 1.(1)1 3 2 4(2) 1432能得到:push(1),pop( ),push(2),push(3),push(4),pop( ),pop( ),pop( );1 4 2 3不能得到,因为栈是先进后出的。
第四章: 一、填空题1、 先进先出2、 先进先出3、 队尾、队头4、 )(n O 、 )1(O 、)1(O 、)(n O5、 队头元素的前一位置、当前的队尾元素6、 (front+1)%Queuelen==rear 、(rear+1)%Queuelen==front7、 rear-front+1、Queuelen-(front-rear)二、选择题1.A 2. C 3. A 4. C 5. D 6. A第五章: 一、选择题1. D2. B3. D4. B5. B6. B7. B8. B B9. B D 二、填空题1、 不对2、 长度为0; 03、 零个或多个任意, “a 1a 2a 3…a n ”4、 长度为零,空格字符组成的串5、 顺序串, 链串6、 长度相同对应字符相同7、 20,38、 主串,子串9、模式串从目标串的首位开始向右位移,每一次合法位移后如果模式串与目标串中相应的字符相同,则该次位移,若有不相同的字符存在,则此次位移10、13第六章:一、选择题1.A2.B3. B4.A5.A6.B7.B8.C9.B 10.A二、运算题1.答:(这是测试我们对树的基本概念的掌握情况.)(1) a是根结点;(2) mndfjkl是叶结点;(3) c是g的双亲;(4) c,a是g的祖先;(5) j,k是g的孩子;(6) imn是e的子孙;(7) d是e的兄弟;g,h是f的兄弟;(8) b的层次是2;n的层次是5;(9) 树的深度是5;(10) 以c为根的子树深度是3;(11) 树的度数是3;2. (1)略(2)解:(a)前序序列:12345 中序序列:24531 后序序列:54321(b)前序序列:12345 中序序列:13542 后序序列:54321(c)前序序列:12357864 中序序列:17583624后序序列:78563421(d)前序序列:124735689 中序序列:472153869后序序列:7425896313. 解:已知二叉树的前序序列为ABDGHCEFI和中序序列GDHBAECIF,则可以根据前序序列找到根结点为A,由此,通过中序序列可知它的两棵子树包分别含有GDHB和ECIF 结点,又由前序序列可知B和C分别为两棵子树的根结点...以此类推可画出所有结点:○A/ \○B ○C/ / \○D ○E○F/ \ /○G ○H ○I第七章:一、选择题1. A2. B3. B4. D5. C6. B7. A或B8. A9. D二、填空题1、 数组表示法,邻接表,深度优先,广度优先2、 邻接矩阵, 度3、 层序4、 )(2N O5、 邻接表6、 邻接矩阵(数组表示)7、 有向8、 不是9、 )(2N O10、 任意两对顶点存在两条相反向的路径, 强连通分量 第八章: 一、选择题注:题目修改第9小题:将“每次把待排序方法的区间划分为左、右两个区间”修改为“每次把待排序元素划分为左、右两个区间”;第12小题: 将“第1趟,13,27,68,49,50,97,27”修改为“第1趟,13,27,68,49,38,50,97,27”第15小题: 将选项A 的值改为 2(n-1)二、填空题 1.(n+1)/2 2.交换3.O(n) ,O(n lbn) ,O(n) 4.O(lbn),O(n)5.(50,42,46,38,40,56,79,84)6.(36,38,40,40,46,56,79,80,24,65,75,84) 7.(75,66,48,29,31,37) 8.顺序 9.堆排序 10.n11.拓扑排序 题目修改:第10小题:将题目改成“对n 个元素进行插入排序,在最佳情形下,整个排序过程中要进行 次元素比较。
(完整版) 《数据结构》教材课后习题+答案
![(完整版) 《数据结构》教材课后习题+答案](https://img.taocdn.com/s3/m/a10462b277232f60dccca154.png)
第1章绪论习题1.简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。
2.试举一个数据结构的例子,叙述其逻辑结构和存储结构两方面的含义和相互关系。
3.简述逻辑结构的四种基本关系并画出它们的关系图。
4.存储结构由哪两种基本的存储方法实现?5.选择题(1)在数据结构中,从逻辑上可以把数据结构分成()。
A.动态结构和静态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构D.内部结构和外部结构(2)与数据元素本身的形式、内容、相对位置、个数无关的是数据的()。
A.存储结构B.存储实现C.逻辑结构D.运算实现(3)通常要求同一逻辑结构中的所有数据元素具有相同的特性,这意味着()。
A.数据具有同一特点B.不仅数据元素所包含的数据项的个数要相同,而且对应数据项的类型要一致C.每个数据元素都一样D.数据元素所包含的数据项的个数要相等(4)以下说法正确的是()。
A.数据元素是数据的最小单位B.数据项是数据的基本单位C.数据结构是带有结构的各数据项的集合D.一些表面上很不相同的数据可以有相同的逻辑结构(5)以下与数据的存储结构无关的术语是()。
A.顺序队列 B. 链表 C. 有序表 D. 链栈(6)以下数据结构中,()是非线性数据结构A.树B.字符串C.队D.栈6.试分析下面各程序段的时间复杂度。
(1)x=90; y=100;while(y>0)if(x>100){x=x-10;y--;}else x++;(2)for (i=0; i<n; i++)for (j=0; j<m; j++)a[i][j]=0;(3)s=0;for i=0; i<n; i++)for(j=0; j<n; j++)s+=B[i][j];sum=s;(4)i=1;while(i<=n)i=i*3;(5)x=0;for(i=1; i<n; i++)for (j=1; j<=n-i; j++)x++;(6)x=n; //n>1y=0;while(x≥(y+1)* (y+1))y++;(1)O(1)(2)O(m*n)(3)O(n2)(4)O(log3n)(5)因为x++共执行了n-1+n-2+……+1= n(n-1)/2,所以执行时间为O(n2)(6)O(n)第2章线性表1.选择题(1)一个向量第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是()。
数据结构课后习题详解(超完整超经典)
![数据结构课后习题详解(超完整超经典)](https://img.taocdn.com/s3/m/3e62e21b54270722192e453610661ed9ad515522.png)
数据结构课后习题详解(超完整超经典)第1章绪论1.1简述下列术语:数据,数据元素、数据对象、数据结构、存储结构、数据类型和抽象数据类型。
解:数据是对客观事物的符号表示。
在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。
数据元素是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。
数据对象是性质相同的数据元素的集合,是数据的一个子集。
数据结构是相互之间存在一种或多种特定关系的数据元素的集合。
存储结构是数据结构在计算机中的表示。
数据类型是一个值的集合和定义在这个值集上的一组操作的总称。
抽象数据类型是指一个数学模型以及定义在该模型上的一组操作。
是对一般数据类型的扩展。
1.2试描述数据结构和抽象数据类型的概念与程序设计语言中数据类型概念的区别。
解:抽象数据类型包含一般数据类型的概念,但含义比一般数据类型更广、更抽象。
一般数据类型由具体语言系统内部定义,直接提供给编程者定义用户数据,因此称它们为预定义数据类型。
抽象数据类型通常由编程者定义,包括定义它所使用的数据和在这些数据上所进行的操作。
在定义抽象数据类型中的数据部分和操作部分时,要求只定义到数据的逻辑结构和操作说明,不考虑数据的存储结构和操作的具体实现,这样抽象层次更高,更能为其他用户提供良好的使用接口。
1.3设有数据结构(D,R),其中Dd1,d2,d3,d4,Rr,rd1,d2,d2,d3,d3,d4试按图论中图的画法惯例画出其逻辑结构图。
解:1.4试仿照三元组的抽象数据类型分别写出抽象数据类型复数和有理数的定义(有理数是其分子、分母均为自然数且分母不为零的分数)。
解:数据对象:D={r,i|r,i为实数}数据关系:R={}基本操作:操作结果:构造一个复数C,其实部和虚部分别为re和imDetroyCmople某(&C)操作结果:销毁复数CGet(C,k,&e)操作结果:用e返回复数C的第k元的值操作结果:改变复数C的第k元的值为e操作结果:如果复数C的两个元素按升序排列,则返回1,否则返回0Put(&C,k,e)IAcending(C)ADTRationalNumber{数据对象:D={,m|,m为自然数,且m不为0}数据关系:R={}基本操作:InitRationalNumber(&R,,m)操作结果:构造一个有理数R,其分子和分母分别为和mDetroyRationalNumber(&R)操作结果:销毁有理数RGet(R,k,&e)操作结果:用e返回有理数R的第k元的值操作结果:改变有理数R 的第k元的值为e操作结果:若有理数R的两个元素按升序排列,则返回1,否则返回0操作结果:若有理数R的两个元素按降序排列,则返回1,否则返回0操作结果:用e返回有理数R的两个元素中值较大的一个操作结果:用e 返回有理数R的两个元素中值较小的一个Put(&R,k,e)IAcending(R)IDecending(R)Ma某(R,&e)Min(R,&e) IDecending(C)操作结果:如果复数C的两个元素按降序排列,则返回1,否则返回0操作结果:用e返回复数C的两个元素中值较大的一个操作结果:用e 返回复数C的两个元素中值较小的一个Ma某(C,&e)Min(C,&e) }ADTRationalNumber(1)product=1;i=1;while(i<=n){product某=i;i++;}(2)i=0;do{i++;}while((i!=n)&&(a[i]!=某));(3)witch{cae某1.5试画出与下列程序段等价的框图。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数据结构基础教程》习题及解答《数据结构基础教程》习题解答(新)第1章习题解答一、填空1.数据是指所有能够输入到计算机中被计算机加工、处理的符号的集合。
2.可以把计算机处理的数据,笼统地分成数值型和非数值型两大类。
3.数据的逻辑结构就是指数据间的邻接关系。
4.数据是由一个个数据元素集合而成的。
5.数据项是数据元素中不可再分割的最小标识单位,通常不具备完整、确定的实际意义,只是反映数据元素某一方面的属性。
6.数据是以数据元素为单位存放在内存的,分配给它的内存区域称为存储结点。
7.每个数据元素都具有完整、确定的实际意义,是数据加工处理的对象。
8.如果两个数据结点之间有着逻辑上的某种关系,那么就称这两个结点是邻接的。
9.在一个存储结点里,除了要有数据本身的内容外,还要有体现数据间邻接关系的内容。
10.从整体上看,数据在存储器内有两种存放的方式:一是集中存放在一个连续的内存存储区中;一是利用存储器中的零星区域,分散地存放在内存的各个地方。
11.在有些书里,数据的“存储结构”也称为数据的“物理结构”。
12.“基本操作”是指算法中那种所需时间与操作数的具体取值无关的操作。
二、选择1.在常见的数据处理中,B 是最基本的处理。
A.删除B.查找C.读取D.插入2.下面给出的名称中, A 不是数据元素的同义词。
A.字段B.结点C.顶点D.记录3.D 是图状关系的特例。
A.只有线性关系B.只有树型关系C.线性关系和树型关系都不D.线性关系和树型关系都4.链式存储结构中,每个数据的存储结点里D指向邻接存储结点的指针,用以反映数据间的逻辑关系。
A.只能有1个B.只能有2个C.只能有3个D.可以有多个5.本书将采用C 来描述算法。
A.自然语言B.流程图(即框图)C.类C语言D.C语言6.有下面的算法段:for (i=0; i<n; i++)k++;其时间复杂度为 B 。
A.O(1) B.O(n) C.O(log2n) D.O(n2)三、问答1.中国百家姓中的赵、钱、孙、李、周、吴、郑、王……等姓氏数据之间,是一种什么样的邻接关系,为什么?答:是一种线性关系,因为这些姓氏之间符合关系的“有头有尾,顺序排列”的特点。
2.什么是数据结点?什么是存储结点?它们间有什么关系?答:数据结点即是数据集合中的一个数据元素,存储结点是存放数据结点的内存单位。
在存储结点里,不仅要存放数据结点的内容,还要(显式或隐式地)存放数据结点间的逻辑关系。
3.为什么说链式存储既提高了存储的利用率,又降低了存储的利用率?答:由于链式存储是通过指针来体现数据元素之间的逻辑关系的,因此,存储结点可以不占用存储器的连续存储区。
从这个意义上说,链式存储能够充分利用存储器中小的存储区,因此提高了存储器的利用率。
另一方面,链式存储中的存储结点不仅要存放数据元素,还要占用适当的存储区来存放指针,这是一种额外的存储开销。
从这个意义上说,链式存储降低了存储器的利用率。
4.列举几个数据之间具有树型结构的实际例子。
答:学校各级管理之间,是一种分支层次结构;一本书的书目,是一种分支层次结构。
5.判断如下除法过程是否是一个算法,为什么:(1)开始;(2)给变量m赋初值5,给变量n赋初值0;(3)m=m/n;(4)输出m;(5)结束。
答:因为0不能为除数,本题第(3)步不具有有效性,所以它不是一个算法。
但如果n的初值不为0,则是一个正确的算法。
四、应用1.用类C语言中的do-while语句,描述输出整数1、2、3、……、9、10的过程。
答:算法编写如下。
void num (){i=1;do{printf (“i = %d\n”, i );i = i +1;} while (i<= 10);}2.用类C语言中的if-else语句,编写算法,描述当输入的数据大于等于0时,输出信息:“输入的是正数”;当输入的数据小于0时,输出信息:“输入的是负数”。
答:算法编写如下。
void judge (){scanf (“%d\n”, &x);if (x>=0)printf (“输入的是正数”);elseprintf (“输入的是负数”);}3.分析算法段中标有记号“#1”和“#2”的基本操作的执行次数:for ( i=0; i<n; i++)for (j=0; j<n; j++){#1 y=1;for (k=0; k<n; k++)#2 y=y+1;}答:标有记号“#1”的基本操作的执行次数是:n2;标有记号“#2”的基本操作的执行次数是:n3。
4.给出下面3个算法段的时间复杂度:(1)x++;(2)for (j=1; j<n; j++)x++;(3)for (j=1; j<=n; j++){printf (“j=%”, j);for (k=j; k<=n; k++)x++;}答:(1)的时间复杂度为O(1);(2)的时间复杂度O(n);(3)中“printf (“j=%”, j);”执行次数的数量级为O(n),“x++;”执行次数是:n+(n-1)+(n-2)+……+2+1 = n(n+1)/2 其数量级为O(n2),因此整个算法段的时间复杂度应该是O(n2)。
第2章习题解答一、填空1.当一组数据的逻辑结构呈线性关系时,在数据结构里就称其为线性表。
2.线性表中数据元素的个数n称为线性表的3.以顺序存储结构实现的线性表,被称为顺序表。
4.以链式存储结构实现的线性表,被称为链表。
5.不带表头结点的链表,是指该链表的表头指针直接指向该链表的起始结点。
6.在一个双链表中,已经由指针ptr指向需要删除的存储结点,则删除该结点所要执行的两条操作是①ptr->Prior->Next = ptr->Next; ②ptr->Next->Prior = ptr->Prior; 。
7.设tail是指向非空、带表头结点的循环单链表的表尾指针。
那么,该链表起始结点的存储位置应该表示成tail->Next->Next 。
8.在一个不带表头结点的非空单链表中,若要在指针qtr所指结点的后面插入一个值为x的结点,则需要执行下列操作:ptr = malloc (size);ptr->Data = x ;ptr->Next = qtr->Next ;qtr->Next = ptr ;9.顺序表Sq = (a1,a2,a3,…,a n)(n≥1)中,每个数据元素需要占用w个存储单元。
若m为元素a1的起始地址,那么元素a n的存储地址是m+(n-1)*w。
10.当线性表的数据元素个数基本稳定、很少进行插入和删除操作,但却要求以最快的速度存取表中的元素时,我们应该对该表采用顺序存储结构。
二、选择1.下面,对非空线性表特点的论述, C 是正确的。
A.所有结点有且只有一个直接前驱B.所有结点有且只有一个直接后继C.每个结点至多只有一个直接前驱,至多只有一个直接后继D.结点间是按照1对多的邻接关系来维系其逻辑关系的2.一般单链表Lk_h为空的判定条件是A 。
A.Lk_h == NULL B.Lk_h->Next == NULLC.Lk_h->Next == Lk_h D.Lk_h != NULL3.带表头结点的单链表Lk_h为空的判定条件是 B 。
A.Lk_h == NULL B.Lk_h->Next == NULLC.Lk_h->Next == Lk_h D.Lk_h != NULL4.往一个顺序表的任一结点前插入一个新数据结点时,平均而言,需要移动B个结点。
A.n B.n/2C.n+1 D.(n+1)/2 5.在一个单链表中,已知qtr所指结点是ptr 所指结点的直接前驱。
现要在qtr所指结点和ptr 所指结点之间插入一个rtr所指的结点,要执行的操作应该是 C 。
A.rtr->Next = ptr->Next; ptr->Next = rtr;B.ptr->Next = rtr->Next;C.qtr->Next = rtr; rtr->Next = ptr;D.ptr->Next = rtr; rtr->Next = qtr->Next;6.在一个单链表中,若现在要删除ptr指针所指结点的直接后继结点,则需要执行的操作是A 。
A.ptr->Next = ptr->Next->Next ;B.ptr = ptr->Next; ptr->Next =ptr->Next->Next ;C.ptr = ptr->Next->Next ;D.ptr->Next ptr ;7.在长度为n的顺序表中,往其第i个元素(1≤i≤n)之前插入一个新的元素时,需要往后移动 B 个元素。
A.n-i B.n-i+1 C.n-i-1 D.i 8.在长度为n的顺序表中,删除第i个元素(1≤i≤n)时,需要往前移动 A 个元素。
A.n-i B.n-i+1 C.n-i-1 D.i 9.设tail是指向一个非空带表头结点的循环单链表的尾指针。
那么,删除链表起始结点的操作应该是 D 。
A.ptr = tail ; B.tail = tail->Next ;tail = tail->Next ; free (tail) ;free (ptr);C.tail = tail->Next->Next ; D.ptr = tail->Next->Next ;Free (tail);tail->Next->Next = ptr->Next ;Free (ptr); free (ptr);10.在单链表中,如果指针ptr所指结点不是链表的尾结点,那么在ptr之后插入由指针qtr 所指结点的操作应该是 B 。
A.qtr->Next = ptr ; B.qtr->Next = ptr->Next ;ptr->Next = qtr ; ptr->Next = qtr ;C.qtr->Next = ptr->Next ;D.ptr->Next = qtr ;ptr = qtr ; qtr->Next = ptr ;三、问答1.试问,如下的线性表:L = (29,25,21,17,13,11,7,5,3,1)是有序线性表还是无序线性表?答:L是一个有序线性表。
2.线性表L第i个存储结点a i的起始地址LOC (a i)可以通过下面的公式计算得到:LOC(a i)= LOC(a i-1)+k其中k表示存储结点的长度。