《数据结构基础教程》习题及解答

合集下载

数据结构1-4章习题答案

数据结构1-4章习题答案

第1章概论习题参考解答一、填空题1、数据的逻辑结构是数据元素之间的逻辑关系,通常有下列4类:()、()、()、()。

【答】集合、线性结构、树型结构和图状结构。

2、数据的存储结构是数据在计算机存储器里的表示,主要有4种基本存储方法:()、()、()、()。

【答】顺序存储方法、链接存储方法、索引存储方法和散列存储方法。

二、选择题1、一个算法必须在执行有穷步之后结束,这是算法的()。

(A)正确性(B)有穷性(C)确定性(D)可行性【答】B。

2、算法的每一步,必须有确切的定义。

也就是说,对于每步需要执行的动作必须严格、清楚地给出规定。

这是算法的()。

(A)正确性(B)有穷性(C)确定性(D)可行性【答】C。

3、算法原则上都是能够由机器或人完成的。

整个算法好像是一个解决问题的“工作序列”,其中的每一步都是我们力所能及的一个动作。

这是算法的()。

(A)正确性(B)有穷性(C)确定性(D)可行性【答】D。

三、简答题1、算法与程序有何异同?【答】尽管算法的含义与程序非常相似,但两者还是有区别的。

首先,一个程序不一定满足有穷性,因此它不一定是算法。

例如,系统程序中的操作系统,只要整个系统不遭受破坏,它就永远不会停止,即使没有作业要处理,它仍处于等待循环中,以待一个新作业的进入。

因此操作系统就不是一个算法。

其次,程序中的指令必须是计算机可以执行的,而算法中的指令却无此限止。

如果一个算法采用机器可执行的语言来书写,那么它就是一个程序。

2、什么是数据结构?试举一个简单的例子说明。

【答】数据结构是指数据对象以及该数据对象集合中的数据元素之间的相互关系(即数据元素的组织形式)。

例如,队列的逻辑结构是线性表(先进先出);队列在计算机中既可以采用顺序存储也可以采用链式存储;对队列可进行删除、插入数据元素以及判断是否为空队列、将队列置空等操作。

3、什么是数据的逻辑结构?什么是数据的存储结构?【答】数据元素之间的逻辑关系,也称为数据的逻辑结构。

《数据结构基础教程》习题及解答

《数据结构基础教程》习题及解答

《数据结构基础教程》习题及解答数据结构基础教程习题及解答第一章:数据结构简介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)个互不相交的集合,每个集合本身又是一棵树。

数据结构试题及答案

数据结构试题及答案

数据结构试题及答案一、选择题(每题2分,共20分)1. 在数据结构中,线性结构的特点是元素之间存在一对一的线性关系。

以下哪个数据结构不属于线性结构?A. 栈B. 队列C. 树D. 链表答案:C2. 栈(Stack)是一种后进先出(LIFO)的数据结构,以下哪个操作不是栈的基本操作?A. PushB. PopC. TopD. Sort答案:D3. 在二叉树的遍历中,前序遍历的顺序是:A. 根-左-右B. 左-根-右C. 右-根-左D. 根-右-左答案:A4. 哈希表的冲突可以通过多种方法解决,以下哪个不是解决哈希表冲突的方法?A. 链地址法B. 开放地址法C. 再散列法D. 排序法答案:D5. 以下哪个排序算法是稳定的?A. 快速排序B. 堆排序C. 归并排序D. 选择排序答案:C6. 在图的遍历中,深度优先搜索(DFS)使用的是哪种数据结构来实现?A. 队列B. 栈C. 链表D. 哈希表答案:B7. 以下哪个是图的存储方式?A. 顺序存储B. 链式存储C. 散列表D. 矩阵存储答案:D8. 动态数组(如C++中的vector)在插入元素时可能需要进行的操作是:A. 原地扩展B. 复制元素C. 重新分配内存D. 释放内存答案:C9. 以下哪个不是算法的时间复杂度?A. O(1)B. O(log n)C. O(n^2)D. O(n!)答案:D10. 在查找算法中,二分查找法要求被查找的数据必须是:A. 无序的B. 有序的C. 随机分布的D. 唯一元素答案:B二、简答题(每题5分,共30分)1. 简述链表和数组的区别。

答案:链表和数组都是存储数据的线性数据结构,但它们在内存分配、访问方式、插入和删除操作等方面存在差异。

数组在内存中是连续存储的,可以通过索引快速访问任意元素,但插入和删除元素时可能需要移动大量元素。

链表在内存中是非连续存储的,每个元素包含数据和指向下一个元素的指针,不支持通过索引快速访问,但插入和删除操作只需要改变指针,不需要移动其他元素。

最新版《数据结构》各章习题及答案

最新版《数据结构》各章习题及答案

最新版《数据结构》各章习题及答案第一章绪论一、选择题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.在树形结构中,树根结点没有_______ 结点,其余每个结点有且只有_______个前驱结点;叶子结点没有 ________ 结点,其余每个结点的后续结点可以_________。

数据结构考试题目及答案pdf

数据结构考试题目及答案pdf

数据结构考试题目及答案pdf一、单项选择题(每题2分,共10分)1. 在数据结构中,线性结构和非线性结构的主要区别在于()。

A. 数据元素之间是否有逻辑关系B. 是否有且仅有一个根节点C. 是否有多个根节点D. 数据元素之间是否有顺序关系答案:A2. 链表中每个节点包含数据元素和()。

A. 一个指针B. 多个指针C. 一个数据域D. 一个数据域和一个指针答案:D3. 在二叉树的遍历中,先序遍历的顺序是()。

A. 根-左-右B. 左-根-右C. 右-根-左D. 根-右-左答案:A4. 哈希表解决冲突的方法不包括()。

A. 开放寻址法B. 链地址法C. 线性探测法D. 二分查找法答案:D5. 堆是一种特殊的完全二叉树,其特点是()。

A. 每个节点的值都大于其子节点的值B. 每个节点的值都小于其子节点的值C. 每个节点的值都大于或等于其子节点的值D. 每个节点的值都小于或等于其子节点的值答案:C二、填空题(每题2分,共10分)1. 在顺序表中,插入一个元素的平均时间复杂度为 O(n) 。

2. 栈是一种特殊的线性表,其特点是后进先出(LIFO),即后进的元素先出栈。

3. 快速排序的时间复杂度在最坏情况下为 O(n^2) 。

4. 广义表的表示形式为 (a, b, c) ,其中a、b、c可以是数据元素或子表。

5. 在图的遍历中,深度优先搜索(DFS)使用的是栈数据结构。

三、简答题(每题10分,共20分)1. 请简述二叉搜索树和平衡二叉树的区别。

答:二叉搜索树是一种特殊的二叉树,其中每个节点的左子树只包含小于该节点的值,右子树只包含大于该节点的值。

平衡二叉树除了满足二叉搜索树的性质外,还要求每个节点的左子树和右子树的高度差不超过1,以保持树的平衡,从而提高查找效率。

2. 什么是图的连通分量?请举例说明。

答:图的连通分量是指图中的最大的连通子图。

如果一个图不是连通的,那么它将被划分为若干个连通分量,每个连通分量内部的顶点都是相互连通的,但不同分量之间没有直接的边相连。

数据结构题库及答案详解

数据结构题库及答案详解

数据结构题库及答案详解一、选择题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. 给定一个整数数组,请实现一个函数来找到数组中的最长连续子序列的长度。

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

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

数据结构习题集(自编)第一章绪论一、选择题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章绪论1 自测习题二、选择题1.以下数据结构中,属于线性结构的是 ( B )A)有向图B)串C)线索二叉树D)B树2.下列与数据元素有关的叙述中错误的是 (A)A)数据元素是有独立含义的数据最小单位B)数据元素是描述数据的基本单位C)数据元素可以称做结点D)数据元素可以称做记录3.以下术语中与数据的存储结构无关的是 (A)A)栈B)散列表C)顺序表D)双链表4.以下数据结构中,属于线性结构的是 (B)A)有向图B)串C)线索二叉树D)B树三、填空题1.数据结构包括的三方面内容分别是:数据的逻辑结构、数据的存储结构和数据的运算。

2.数据元素是数据的基本单位,在某些情况下也可以称为结点、记录和顶点。

3.数据逻辑结构的4种基本形态包括集合结构、线性结构、树型结构和图(网)结构。

4.一个正确的算法应该具有5个特性:输入、输出、确定性、可行性和有穷性。

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

6.一个数据结构在计算机中的映象称为存储结构。

7.一个算法的效率主要是指该算法的时间效率和空间效率。

8.以下程序段的时间复杂度T(n)=_)nO_____。

(2sum=0;for(i=0 ; i<n; i++)for( j=0; j<n; j++)sum+=a[i][j];printf("%d\n",sum);第2章线性表2 自测习题二、选择题1.以下链表结构中,从当前结点出发能够访问到任一结点的是(B) A)单向链表和双向链表B)双向链表和循环链表C)单向链表和循环链表D)单向链表、双向链表和循环链表2.线性表是具有n 个 (B) 的有限序列。

A )数据项B )数据元素C )表元素D )字符3.若长度为n 的线性表采用链式存储结构,访问其第i 个元素的算法时间复杂度为 (B)A )O(1)B )O(n)C ) O(n 2)D )O(log 2n)4.在长度为n 的顺序表中,若要删除第i (1≤i ≤n )个元素,则需要向前移动的元素的次数为 (B)A )iB )n-iC )n-i+1D )n-i-15.在长度为n 的顺序表中第i (1≤i ≤n )个位置上插入一个元素时,为留出插入位置所需移动元素的次数为 (C)A )n-iB )iC )n-i+1D )n-i-1三、填空题1.有一单链表结构如下:图2-1 填空题1附图若要删除值为c 的结点,应做的操作是 p->link=p->link->link 。

(完整版)数据结构练习题及参考答案

(完整版)数据结构练习题及参考答案

数据结构练习题第一部分绪论一、单选题1. 一个数组元素a[i]与________的表示等价。

A、 *(a+i)B、 a+iC、 *a+iD、 &a+i2. 对于两个函数,若函数名相同,但只是____________不同则不是重载函数。

A、参数类型B、参数个数C、函数类型3. 若需要利用形参直接访问实参,则应把形参变量说明为________参数A、指针B、引用C、值4. 下面程序段的时间复杂度为____________。

for(int i=0; i<m; i++)for(int j=0; j<n; j++)a[i][j]=i*j;A、 O(m2)B、 O(n2)C、 O(m*n)D、 O(m+n)5. 执行下面程序段时,执行S语句的次数为____________。

for(int i=1; i<=n; i++)for(int j=1; j<=i; j++)S;A、 n2B、 n2/2C、 n(n+1)D、 n(n+1)/26. 下面算法的时间复杂度为____________。

int f( unsigned int n ) {if ( n==0 || n==1 ) return 1; else return n*f(n-1);}A、 O(1)B、 O(n)C、 O(n2)D、 O(n!)二、填空题1. 数据的逻辑结构被分为__________、_________、__________和__________四种。

2. 数据的存储结构被分为__________、_________、__________和__________四种。

3. 在线性结构、树形结构和图形结构中,前驱和后继结点之间分别存在着________、________和________的联系。

4. 一种抽象数据类型包括__________和__________两个部分。

5. 当一个形参类型的长度较大时,应最好说明为_________,以节省参数值的传输时间和存储参数的空间。

《数据结构基础教程》习题及解答

《数据结构基础教程》习题及解答

《数据结构基础教程》习题解答(新)第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.中国百家姓中的赵、钱、孙、李、周、吴、郑、王……等姓氏数据之间,是一种什么样的邻接关系,为什么?答:是一种线性关系,因为这些姓氏之间符合关系的“有头有尾,顺序排列”的特点。

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

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

第一章绪论一、选择题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)9、下面算法的时间复杂度为( )。

int f ( int n ){ if ( n= =0 || n= =1 ) return 1; else return n*f (n-1); }A) O(1) B) O(n) C) O(n2) D) O(n!)二、填空题1、数据的( )结构依赖于计算机语言。

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

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

数据结构习题(包含全部答案解析)数据结构习题(包含全部答案解析)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. 栈的应用题目描述:给定一个只包含'('和')'的字符串,判断该字符串是否是有效的括号序列。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2。

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

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

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

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

数据结构习题(含答案)

数据结构习题(含答案)

第一章绪论一、填空题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.树型结构的特点是:根结点没有________结点,其余每个结点有且仅有________个前驱结点;叶子结点_________后继结点,其余结点可以有_________个后继结点。

数据结构课后习题答案

数据结构课后习题答案

第1章绪论一、基础知识题1.1 简述下列概念数据,数据元素,数据类型,数据结构,逻辑结构,存储结构,算法。

【解答】数据是信息的载体,是描述客观事物的数、字符,以及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。

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

在不同的条件下,数据元素又可称为元素、结点、顶点、记录等。

数据类型是对数据的取值范围、数据元素之间的结构以及允许施加操作的一种总体描述。

每一种计算机程序设计语言都定义有自己的数据类型。

“数据结构”这一术语有两种含义,一是作为一门课程的名称;二是作为一个科学的概念。

作为科学概念,目前尚无公认定义,一般认为,讨论数据结构要包括三个方面,一是数据的逻辑结构,二是数据的存储结构,三是对数据进行的操作(运算)。

而数据类型是值的集合和操作的集合,可以看作是已实现了的数据结构,后者是前者的一种简化情况。

数据的逻辑结构反映数据元素之间的逻辑关系(即数据元素之间的关联方式或“邻接关系”),数据的存储结构是数据结构在计算机中的表示,包括数据元素的表示及其关系的表示。

数据的运算是对数据定义的一组操作,运算是定义在逻辑结构上的,和存储结构无关,而运算的实现则依赖于存储结构。

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

是逻辑结构在存储器中的映像,包括数据元素的表示和关系的表示。

逻辑结构与计算机无关。

算法是对特定问题求解步骤的一种描述,是指令的有限序列。

其中每一条指令表示一个或多个操作。

一个算法应该具有下列特性:有穷性、确定性、可行性、输入和输出。

1.2数据的逻辑结构分哪几种,为什么说逻辑结构是数据组织的主要方面?【解答】数据的逻辑结构分为线性结构和非线性结构。

(也可以分为集合、线性结构、树形结构和图形即网状结构)。

逻辑结构是数据组织的某种“本质性”的东西:(1)逻辑结构与数据元素本身的形式、内容无关。

(2)逻辑结构与数据元素的相对位置无关。

(3)逻辑结构与所含数据元素的个数无关。

《数据结构基础教程》部分题答案

《数据结构基础教程》部分题答案

《数据结构基础教程》部分题答案 第一章: 一、填空题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 个元素进行插入排序,在最佳情形下,整个排序过程中要进行 次元素比较。

(完整版) 《数据结构》教材课后习题+答案

(完整版) 《数据结构》教材课后习题+答案

第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个元素的地址是()。

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

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

数据结构课后习题详解(超完整超经典)第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. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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章习题解答一、填空在数据结构里就称其为线性表。

被称为顺序表。

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 == NULLB.Lk_h->Next == NULLC.Lk_h->Next == Lk_hD.Lk_h != NULL5.在一个单链表中,已知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-iB.n-i+1C.n-i-1D.i8.在长度为n得顺序表中,删除第i个元素(1≤i≤n)时,需要往前移动 A 个元素。

A.n-iB.n-i+1C.n-i-1D.i9.设tail就是指向一个非空带表头结点得循环单链表得尾指针。

那么,删除链表起始结点得操作应该就是 D 。

ZkFAM。

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表示存储结点得长度。

这个公式对吗?为什么?答:这个公式就是对得,因为第i个存储结点a i得起始地址LOC(a i),实际上就就是等于第i-1个存储结点a i-1得起始地址LOC(a i-1)加上一个存储结点得长度k得到。

3.试说明创建顺序表算法Create_Sq ()中,Sq_max与Sq_num得不同之处。

答:Sq_max代表得就是顺序表得最大长度,也就就是它最多可以容纳下多少个数据元素,顺序表创建后,Sq_max就是一个保持不变得常量;Sq_num代表得就是顺序表内当前拥有得数据元素个数,在顺序表创建后,随着对数据元素进行得插入、删除操作,Sq_num将会不断地发生变化。

相关文档
最新文档