数据结构习题(456章)
- 格式:doc
- 大小:86.00 KB
- 文档页数:5
【课后习题】第4章 串 第5章 数组和广义表网络工程2010级( )班 学号: 姓名:一、填空题(每空1分,共30分)1. 串有三种机内表示方法: 、 和 ,其中前两种属于顺序存储结构,第三种属于 。
2. 若n 为主串长度,m 为子串长度,则串的BF (朴素)匹配算法最坏的情况下需要比较字符的总次数为 ,T(n)= 。
3. 是任意串的子串;任意串S 都是S 本身的子串,除S 本身外,S 的其他子串称为S 的 。
4. 设数组a[1…50, 1…60]的基地址为1000,每个元素占2个存储单元,若以行序为主序顺序存储,则元素a[32,58]的存储地址为 。
5. 对于数组,比较适于采用 结构够进行存储。
6. 广义表的深度是指_______。
7. 将一个100100 A 的三对角矩阵,按行优先存入一维数组B[297]中,A 中元素66,66A 在B 数组中的位置k 为 。
注意:a i,j 的k 为 2(i-1)+j-1,(i=1时j=1,2;1<i<=n 时,j=i-1,i,i+1) 。
8. 称为空串; 称为空白串。
9. 求串T 在主串S 中首次出现的位置的操作是 ,其中 称为目标串, 称为模式。
10. 对称矩阵的下三角元素a[i,j],存放在一维数组V 的元素V[k]中(下标都是从0开始),k 与i ,j 的关系是:k= 。
11. 在n 维数组中每个元素都受到 个条件的约束。
12. 同一数组中的各元素的长度 。
13. 三元素组表中的每个结点对应于稀疏矩阵的一个非零元素,它包含有三个数据项,分别表示该元素的 、 和 。
14. 稀疏矩阵中有n 个非零元素,则其三元组有 行。
15.求下列广义表操作的结果:(1)GetHead【((a,b),(c,d))】=== ;(2)GetHead【GetTail【((a,b),(c,d))】】=== ;(3)GetHead【GetTail【GetHead【((a,b),(c,d))】】】=== ;(4)GetTail【GetHead【GetTail【((a,b),(c,d))】】】=== ;16.广义表E=(a,(b,E)),则E的长度= ,深度= ;二、判断题(如果正确,在下表对应位置打“√”,否则打“⨯”。
数据结构习题及解答第1章 概述【例1-1】分析以下程序段的时间复杂度。
for(i=0;i<n;i++)for(j=0;j<m;j++) A[i][j]=0;解:该程序段的时间复杂度为O (m*n )。
【例1-2】分析以下程序段的时间复杂度。
i=s=0; ①while(s<n){ i++; ②s+=i; ③}解:语句①为赋值语句,其执行次数为1次,所以其时间复杂度为O (1)。
语句②和语句③构成while 循环语句的循环体,它们的执行次数由循环控制条件中s 与n 的值确定。
假定循环重复执行x 次后结束, 则语句②和语句③各重复执行了x 次。
其时间复杂度按线性累加规则为O (x )。
此时s 与n 满足关系式:s ≥n ,而s=1+2+3+…+x 。
所以有:1+2+3+…+x ≥n ,可以推出:x=n n 241212811+±-=+±-x 与n 之间满足x=f(n ),所以循环体的时间复杂度为O (n ),语句①与循环体由线性累加规则得到该程序段的时间复杂度为O (n )。
【例1-3】分析以下程序段的时间复杂度。
i=1; ①while(i<=n) i=2*i; ②解:其中语句①的执行次数是1,设语句②的执行次数为f (n ),则有:n n f ≤)(2。
得:T(n)=O(n2 log)【例1-4】有如下递归函数fact(n),分析其时间复杂度。
fact(int n){ if(n<=1) return(1); ①elsereturn(n*fact(n-1)); ②}解:设fact(n)的运行时间函数是T(n)。
该函数中语句①的运行时间是O(1),语句②的运行时间是T(n-1)+ O(1),其中O(1)为常量运行时间。
由此可得fact(n)的时间复杂度为O(n)。
习题1一、单项选择题1.数据结构是指(1. A )。
A.数据元素的组织形式B.数据类型C.数据存储结构D.数据定义2.数据在计算机存储器内表示时,物理地址与逻辑地址不相同的,称之为(2. C )。
《数据结构基础教程》习题及解答数据结构基础教程习题及解答第一章:数据结构简介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)个互不相交的集合,每个集合本身又是一棵树。
数据结构习题(有答案) 第1章绪1。
1 有下列几种二元组表示的数据结构,试画出它们分别对应的图形表示,并指出它们分别属于何种结构。
(1) A= ( D,R ),其中,D = { a1,a2,a3,a4}, R={ }(2) B= ( D,R ),其中,D = { a,b,c,d,e}, R={ (a,b),(b,c),(c,d),(d,e)}(3) C= ( D,R),其中,D = { a,b,c,d,e,f,g}, R={(d,b),(d,g),(1)集合(2) 线性表a b c d e(3)树fgabcde(4)图1453621 / 48·····谢阅。
(b,a),(b,c),(g,e),(e,f)}(4) K= ( D,R ),其中,D= { 1,2,3,4,5,6}, R={〈1,2>,〈2,3>,〈2,4>,<3,4>,<3,5>,<3,6>,<4,5〉,〈4,6〉}1.2设n为正整数,求下列各程序段中的下划线语句的执行次数。
(1) i=1;k=0while(i 〈=n-1){k+=10*i ;i++;(2) for (int i=1;i<=n; i++)for (int j=1; j〈=n; j++){c[i][j]=0;解:(1) n-1(2) ∑∑∑====ninjnkn111312 / 48·····谢阅。
}ﻩ for(intk=1; k〈=n; k++)c[i][j]=c[i][j]+a[i][k]*b[k][j]}(3) x=0;y=0;for (int i=1; i<=n; i++)for (int j=1; j<=i; j++)for (intk=1; k〈=j; k ++)(3)62)1)(nn(n21)(216)12)(1(2121212)1(1112111111++=+•+++•=+=+==∑∑∑∑∑∑∑∑========nnnnniii ijnininiijjkniijni3 / 48·····谢阅。
最新版《数据结构》各章习题及答案第一章绪论一、选择题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.在树形结构中,树根结点没有_______ 结点,其余每个结点有且只有_______个前驱结点;叶子结点没有 ________ 结点,其余每个结点的后续结点可以_________。
数据结构习题集(自编)第一章绪论一、选择题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. 塔的问题题目描述:有三个塔,分别是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.简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。
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个元素的地址是()。
《数据结构》教材课后习题+答案数据结构第一章介绍数据结构是计算机科学中重要的概念,它涉及到组织和存储数据的方法和技术。
数据结构的选择对于算法的效率有着重要的影响。
本教材为读者提供了丰富的课后习题,以帮助读者巩固所学知识并提高解决问题的能力。
下面是一些选定的习题及其答案,供读者参考。
第二章线性表习题一:给定一个顺序表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```习题二:利用两个栈实现一个队列。
第一章绪论一、填空题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. 题目:给定一个整数数组,判断是否存在两个元素之和等于目标值。
答案:使用双指针法,首先将数组排序,然后设置左指针指向数组头部,右指针指向数组尾部。
如果左指针和右指针指向的元素之和小于目标值,则左指针右移;如果大于目标值,则右指针左移;如果等于目标值,则找到了两个元素之和等于目标值的情况。
2. 题目:给定一个整数数组和一个目标值,找出数组中和为目标值的两个数的下标。
答案:使用哈希表,在遍历数组的过程中,将每个元素的值和下标存储在哈希表中。
遍历到当前元素时,检查目标值与当前元素的差值是否在哈希表中,如果存在,则找到了两个数的下标。
---第二章:链表1. 题目:给定一个链表,判断链表中是否存在环。
答案:使用快慢指针法,定义两个指针,一个指针每次向前移动一个节点,另一个指针每次向前移动两个节点。
如果存在环,则两个指针必定会相遇。
2. 题目:给定一个链表,删除链表的倒数第N个节点。
答案:使用双指针法,定义两个指针,一个指针先移动N个节点,然后两个指针同时向前移动,直到第一个指针到达链表尾部。
此时第二个指针指向的节点即为要删除的节点。
---第三章:栈和队列1. 题目:设计一个栈,使得可以在常数时间内获取栈中的最小元素。
答案:使用辅助栈来保存当前栈中的最小元素。
每次压栈操作时,将当前元素与辅助栈的栈顶元素比较,只有当前元素较小才将其压入辅助栈。
2. 题目:设计一个队列,使得可以在常数时间内获取队列中的最大元素。
答案:使用双端队列来保存当前队列中的最大值。
每次入队操作时,将当前元素与双端队列的末尾元素比较,只有当前元素较大才将其压入双端队列。
---第四章:树和二叉树1. 题目:给定一个二叉树,判断它是否是平衡二叉树。
答案:通过递归遍历二叉树的每个节点,计算每个节点的左子树高度和右子树高度的差值。
如果任意节点的差值大于1,则该二叉树不是平衡二叉树。
各章习题各章习题 (1)第一章绪论(7) (1)第二章线性表(6) (2)第三章栈和队列(5) (2)第四章串(3) (3)第五章数组(3) (3)第六章二叉树(20) (4)第七章图(5) (6)第九章查找(5) (7)第十章排序(8) (7)第一章绪论(7)1、数据结构中的4种逻辑结构是_________、__________、_________、_________.2.在数据结构中,从逻辑上可以把数据结构分成_________。
A.动态结构和静态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构D.内部结构和外部结构3、一个算法除了输入和输出特性外,还必须具有的特性不包括_____A 有穷性B 可扩展性C 确定性D可行性4.算法分析的两个主要方面是____。
A.空间复杂性和时间复杂性B.正确性和简明性C.可读性和文档性D.数据复杂性和程序复杂性5.设有数据结构D={d1,d2,d3,d4},R={(d1,d2),(d2,d3),(d3,d4)}画出相关逻辑图6.设图G=(V,E),V={1,2,3,4,5,6},E={<1,2>,<1,3>,<2,5>,<3,6>,<6,5>,<5,4>,<6,4>}。
请画出该图7.计算下列标有@语句的频度i=1;j=0;while (i+j<=n){if(i<j) j++ //@else i++;}第二章线性表(6)1.在n个元素的顺序表中插入或删除一个元素,需要平均移动________个元素。
2.带头结点的单循环链表,判定表空的条件是(设指向头结点的指针是H)_________________。
3. 不带头结点的单链表head为空的判定条件是___________A.head == NULLB.head->next == NULLC.head->next == headD.head != NULL4.线性表的顺序存储结构是一种______的存储结构,线性表的链式存储结构是一种______的存储结构。
数据结构试题及答案(十套)数据结构试题及答案(十套)一、选择题1. 数据结构是指()。
A. 存储数据的方式B. 数据的逻辑结构和物理结构C. 数据的存储结构和存储方式D. 数据的逻辑结构、存储结构和存储方式答案:D2. 在数据结构中,线性表的存储方式包括()。
A. 顺序存储和链式存储B. 数组存储和链表存储C. 顺序存储、链表存储和索引存储D. 顺序存储、链表存储和树形存储答案:A3. 栈是一种()的数据结构。
A. 先进先出B. 先进后出C. 后进先出D. 后进后出答案:C4. 队列是一种()的数据结构。
A. 先进先出B. 先进后出C. 后进先出D. 后进后出答案:A5. 二叉树中,度为0的节点称为()。
A. 叶子节点B. 根节点C. 中间节点D. 子节点答案:A6. 以下哪个排序算法是稳定的?A. 快速排序B. 选择排序C. 插入排序D. 希尔排序答案:C7. 图中表示顶点之间关系的边的数量称为()。
A. 顶点度数B. 边数C. 路径数D. 网络答案:B8. 哈希表通过()来实现高效的查找操作。
A. 散列函数B. 排序算法C. 遍历操作D. 顺序存储答案:A9. 平衡二叉树是一种具有左右子树高度差不超过()的二叉树。
A. 0B. 1C. 2D. 3答案:B10. 在链表中,删除节点的操作时间复杂度是()。
A. O(1)B. O(logn)C. O(n)D. O(nlogn)答案:A二、填空题1. 在顺序存储结构中,元素之间的逻辑关系由()表示。
答案:下标2. 二叉查找树的中序遍历结果是一个()序列。
答案:递增3. 哈希表通过散列函数将关键字映射到()上。
答案:地址4. 图的邻接表中,每个顶点的所有邻接点链接成一个()。
答案:链表5. 位运算符中的左移和右移运算都是对二进制数进行()操作。
答案:移位三、解答题1. 简要介绍顺序存储和链式存储这两种线性表的存储方式,并比较它们的优缺点。
答案:顺序存储是将元素按照逻辑顺序依次存储在一块连续的存储空间中,通过元素的下标可以直接访问到元素。
一、单选题(每小题3分,共30分)1.在逻辑上可以把数据结构分成。
( ) A.动态结构和静态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构D.内部结构和外部结构2.串是_________。
( ) A.不少于一个字母的序列B.任意个字母的序列C.不少于一个字符的序列D.有限个字符的序列3.在n个元素的顺序表中,时间复杂度是O(1)的操作是______。
( ) A.获得第i个数据元素值B.查找给定值C.在第i个位置上插入数据元素D.删除第i个数据元素4.线性表若采用链式存储结构时,要求内存中可用存储单元的地址________。
( )A. 必须是连续的B. 部分地址必须是连续的C. 一定是不连续的D. 连续或不连续都可以5.单链表中,在p结点之后插入q结点,操作的语句为。
( ) A.q->next=p->next,p->next=q B.p=q->next,q->next=pC.p->next=q->next,q->next=p D.q=p->next,p->next=q6.栈中数据元素的插入和删除操作是在表的进行的。
( )A.一端B.两端C.中间D.任意位置7.队列的特点是。
( )A.先进先出B.后进先出C.先进后出D.随机存取8.树中结点A有3个兄弟,结点B是A的双亲,则B的度是。
( )A.1B.2C.3D.49.下面关于图的存储结构的叙述中正确的是____________。
( )A.用邻接矩阵存储图,占用空间大小只与图中顶点数有关,而与边数无关B.用邻接矩阵存储图,占用空间大小只与图中边数有关,而与顶点数无关C.用邻接表存储图,占用空间大小只与图中顶点数有关,而与边数无关D.用邻接表存储图,占用空间大小只与图中边数有关,而与顶点数无关10.对于不带权的有向图,其邻接矩阵的每一列包含的“1”的个数为。
( )A.图中每个顶点的入度B.图中每个顶点的出度C.图中弧的条数D.图中连通分量的数目二、判断题(每小题1分,共10分)对于正确的说法,请在题前的括号内打√,错误的说法则打×。
数据结构练习题第一部分绪论一、单选题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.若串S='software',其子串的数目是()
A.8 B.37 C.36 D.9
2.设有两个串p和q,求q在p中首次出现的位置的运算称作()
A.连接B.模式匹配C.求串长D.求子串
3.设字符串S1=“ABCDEFG”,S2=“PQRST”,则运算:
S=CONCAT(SUBSTR(S1,2,LEN(S2));SUBSTR(S1,LEN(S2),2));后的串值为()
A.A BCDEF B.BCDEFG C.BCDPQRST D. BCDEFEF
4.下面的说法中,只有()是正确的
A.串是一种特殊的线性表B.串的长度必须大于零
C.串中元素只能是字母D.空串就是空白串
5.两个字符串相等的条件是()
A.两串的长度相等
B.两串包含的字符相同
C.两串的长度相等,并且两串包含的字符相同
D.两串的长度相等,并且对应位置上的字符相同
二.填空题
1.串“ababcbaababd”的next函数值为,nextval函数值为。
2.子串的长度为。
第五章数组和广义表
一.选择题
1.设有数组A[i,j],数组的每个元素长度为3字节,i的值为1 到8 ,j的值为1 到10,数组从内存首地址BA开始顺序存放,当用以列为主存放时,元素A[5,8]的存储首地址为( ) A. BA+141 B. BA+180 C. BA+222 D. BA+225
2.假设以行序为主序存储二维数组A=array[1..100,1..100],设每个数据元素占2个存储单元,基地址为10,则LOC[5,5]=()
A. 808
B. 818
C. 1010
D. 1020
3.对稀疏矩阵进行压缩存储目的是()
A.便于进行矩阵运算B.便于输入和输出C.节省存储空间D.降低运算的时间复杂度
4.假设以三元组表表示稀疏矩阵,则与如图所示三元组表对应的4×5的稀疏矩阵是(注:矩阵的行列下标均从1开始)()
A.
⎪
⎪
⎪
⎪
⎪
⎭
⎫
⎝
⎛
-
-
4
5
7
6
8
B.
⎪
⎪
⎪
⎪
⎪
⎭
⎫
⎝
⎛
-
-
4
5
3
7
6
8
C.
⎪
⎪
⎪
⎪
⎪
⎭
⎫
⎝
⎛
-
-
4
5
7
3
6
8
D.
⎪
⎪
⎪
⎪
⎪
⎭
⎫
⎝
⎛
-
-
3
4
5
7
6
8
二.解答题
已知一个6行5列的稀疏矩阵中非零元的值分别为:-90,41,-76,28,-54,65,-8,它们在矩阵中的列号依次为:1,4,5,1,2,4,5。
当以带行表的三元组表作存储结构时,其行表中的值依次为0,0,2,2,3,5(行列下标均从1开始),写出该稀疏矩阵。
第六章树和二叉树
一.选择题
1.如果在数据结构中每个数据元素只可能有一个直接前驱,但可以有多个直接后继,则该结构是()
A. 栈
B. 队列
C. 树
D. 图
2.设树T的度为4,其中度为1,2,3和4的结点个数分别为4,2,1,1 则T中的叶子数为()
A.5 B.6 C.7 D.8
3.已知一棵含50个结点的二叉树中只有一个叶子结点,则该树中度为1的结点个数为()A. 0 B. 1 C. 48 D. 49
4.树的先根序列等同于与该树对应的二叉树的()
A.先序序列B.中序序列C.后序序列D.层序序列
5. 用二叉链表表示具有n个结点的二叉树时,值为空的指针域的个数为()
A.n-1 B.n C.n+l D.2n
6. 设森林F对应的二叉树为B,它有m个结点,B的根为p,p的右子树结点个数为n,森林F 中第一棵树的结点个数是()
A.m-n B.m-n-1 C.n+1 D.条件不足,无法确定
7. 设树T的度为4,其中度为1,2,3和4的结点个数分别为4,2,1,1,则T中的叶子数为()
A.5 B.6 C.7 D.8
8.设森林F中有三棵树,第一,第二,第三棵树的结点个数分别为M1,M2和M3。
与森林F对应的二叉树根结点的右子树上的结点个数是()
A.M1 B.M1+M2 C.M3 D.M2+M3
9.一棵完全二叉树上有1001个结点,其中叶子结点的个数是()
A.250 B.500 C.254 D.505 E.以上答案都不对10.有n个叶子的哈夫曼树的结点总数为()
A.不确定B.2n C.2n+1 D.2n-1
11.一棵二叉树高度为h,所有结点的度或为0,或为2,则这棵二叉树最少有( )结点
A.2h B.2h-1 C.2h+1 D.h+1
12.将有关二叉树的概念推广到三叉树,则一棵有244个结点的完全三叉树的高度()A.4 B.5 C.6 D.7
13.若度为m的哈夫曼树中,其叶结点个数为n,则非叶结点的个数为()
A.n-1 B.⎣n/m⎦-1 C.⎡(n-1)/(m-1)⎤D.⎡n/(m-1)⎤-1 E.⎡(n+1)/(m+1)⎤-1 14.若下面几个符号串编码集合中,不是前缀编码的是()。
A.{0,10,110,1111} B.{11,10,001,101,0001}
C.{00,010,0110,1000} D.{b,c,aa,ac,aba,abb,abc}
15.一棵二叉树的前序遍历序列为ABCDEFG,它的中序遍历序列可能是()A.CABDEFG B.ABCDEFG C.DACEFBG D.ADCFEG
16.线索二叉树是一种()结构。
A.逻辑B.逻辑和存储C.物理D.线性
17.引入二叉线索树的目的是()
A.加快查找结点的前驱或后继的速度B.为了能在二叉树中方便的进行插入与删除C.为了能方便的找到双亲D.使二叉树的遍历结果唯一
18.n个结点的线索二叉树上含有的线索数为()
A.2n B.n-l C.n+l D.n
19.若X是二叉中序线索树中一个有左孩子的结点,且X不为根,则x的前驱为( )
的双亲的右子树中最左的结点
的左子树中最右结点的左子树中最右叶结点
20.某二叉树的前序序列和后序序列正好相反,则该二叉树一定是()的二叉树
A.空或只有一个结点B.任一结点无左子树
C.高度等于其结点数D.任一结点无右子树
二.填空题
1.假定一棵树的嵌套括号表示法为A (B (E ),C (F (H ,I ,J ),G ),D ),则该树的度为______,树的深度为_____,终端点的个数为____,但分支结点的个数为_____,双分支结点为_____,三分支结点的个数为______, C 结点的双亲结点为_________,其孩子结点为__________和为_________结点。
2.一棵深度为K 的满二叉树结点总数为___________ ,一棵深度为K 的完全二叉树的结点总数的最小值为________,最大值为____________。
3.由三个结点构成的二叉树,共有_____________种不同的形态。
4.具有100个叶子结点的完全二叉树的深度为
5.高为h(h>0)的满二叉树对应森林的由棵树构成。
三.已知一个二叉树的中序序列为CBEDAHGIJF,后序序列为CEDBHJIGFA。
1.画出该二叉树。
2.画出该二叉树的先序线索二叉树。
四.试找出分别满足下列条件的所有二叉树:
1.先序序列和中序序列相同。
2.中序序列和后序序列相同。
3.先序序列和后序序列相同。
五.设二叉树用二叉链表表示,设计算法求二叉树的高度。
六.设用于通信的电文由字符集{a,b,c,d,e,f,g}中的字母构成,它们在电文中出现的频率分别为{,,,,,,},回答下列问题:
⑴为这7个字母设计哈夫曼编码
⑵若对这7个字母进行等长编码,至少需要几位二进制数?
七.设计算法以输出二叉树中先序序列的前k(k>0)个结点的值。
八.编写算法,对一棵二叉树统计叶子的个数
九.假设以二叉链表表示二叉树,其类型定义如下:
typedef struct node {
DataType data;
struct node * lchild, * rchild; //左右孩子指针
}* BinTree ;
阅读下列算法,并回答问题:
①已知以T为根指针的二叉树如图所示,写出执行Demo2(T)之后的返回值;
②简述算法Demo2的功能。
int Demo2( BinTree T)
{
int d;
if ( ! T) return 0;
d = Demo2 ( T - > lchild) +Demo2 ( T - > rchild) ;
if (T - > lchild && T - > rchild)
return d + 1 ;
else
return d;
}
①返回值:
②功能:。