电大《数据结构》2020-2021期末试题及答案
《数据结构》期末考试试题及答案

《数据结构》期末考试试题及答案一、单项选择题1. 数据结构是计算机科学的基础学科之一。
下列哪个选项正确描述了数据结构的定义?A. 数据结构是一种计算机程序B. 数据结构是一种存储和组织数据的方法C. 数据结构是一种人工智能技术D. 数据结构是一种操作系统答案:B2. 链表和数组是常见的数据结构,它们之间的主要区别是:A. 数组可以存储不同类型的数据,而链表只能存储相同类型的数据B. 数组的元素在内存中是连续存储的,而链表的元素在内存中是分散存储的C. 链表可以随机访问元素,而数组只能顺序访问元素D. 链表的插入和删除操作更高效,而数组的访问操作更高效答案:B3. 在二叉树中,每个节点最多可以有多少个子节点?A. 1B. 2C. 3D. 无限多个答案:B二、填空题1. 假设有一组数据 [5, 8, 3, 2, 9],按照从小到大的顺序进行冒泡排序的过程中,经过三次交换后的结果是__2__,__3__,__5__,__8__,__9__。
2. 请完成以下代码,实现栈的入栈和出栈操作:```pythonclass Stack:def __init__(self):self.stack = []def push(self, item):self.stack.append(item)def pop(self):if not self.is_empty():return self.stack.pop()def is_empty(self):# 示例代码s = Stack()s.push(1)s.push(2)s.push(3)print(s.pop()) # 输出 3print(s.pop()) # 输出 2print(s.is_empty()) # 输出 False ```答案:```pythonclass Stack:def __init__(self):self.stack = []def push(self, item):self.stack.append(item)def pop(self):if not self.is_empty():def is_empty(self):return len(self.stack) == 0# 示例代码s = Stack()s.push(1)s.push(2)s.push(3)print(s.pop()) # 输出 3print(s.pop()) # 输出 2print(s.is_empty()) # 输出 False```三、简答题1. 请简要介绍树的基本概念及常见的树结构。
2020年国家开放大学电大数据结构期末综合考题及答案

一、单项选择题1.数据的物理结构(D )。
A.与数据的逻辑结构无关 B.仅仅包括数据元素的表示C.只包括数据元素间关系的表示 D.包括数据元素的表示和关系的表示2.数据元素是数据的基本单位,它(C )。
A.只能有一个数据项组成B.至少有二个数据项组成C.可以是一个数据项也可以由若干个数据项组成D.至少有一个数据项为指针类型3.从n个数中选取最大元素,(C )。
A.基本操作是数据元素间的交换B.算法的时间复杂度是O(n2)C.算法的时间复杂度是O(n) D.需要进行(n+1)次数据元素间的比较4.线性表的顺序结构中,(C )。
A.逻辑上相邻的元素在物理位置上不一定相邻B.数据元素是不能随机访问的C.逻辑上相邻的元素在物理位置上也相邻D.进行数据元素的插入、删除效率较高5.以下表中可以随机访问的是(D )。
A.单向链表 B.双向链表C.单向循环链表D.顺序表6.带头结点的单向链表为空的判断条件是(B )(设头指针为head)。
A.head = =NULL B.head->next= =NULL C.head->next= =head D.head!=NULL 7 .设顺序存储的线性表长度为n,对于删除操作,设删除位置是等概率的,则删除一个元素平均移动元素的次数为( A )。
A.(n+1)/2 B.n C.2n D.n-i8.线性结构中数据元素的位置之间存在(A)的关系。
A.一对一B.一对多C.多对多D.每一个元素都有一个直接前驱和一个直接后继9.设top是一个链栈的栈顶指针,栈中每个结点由一个数据域data和指针域next组成,设用x接收栈顶元素,则出栈操作为(A )。
A.x=top->data;top=top->next; B.top=top->next;x=top->data;C.x=top-> next;top=top-> data; D.top->next =top; x=top->data;10.设顺序存储的线性表长度为n,要删除第i个元素,按课本的算法,当i=(C)时,移动元素的次数为3A.3 B.n/2 C.n-3 D.411.以下说法正确的是(C )。
2020-2021学年《数据结构》期末考试试题及答案

2020-2021学年《数据结构》期末考试复习试题一、单项选择题1.对于一个算法,当输入非法数据时,也要能作出相应的处理,这种要求称为()。
(A)、正确性(B). 可行性(C). 健壮性(D). 输入性2.设S为C语言的语句,计算机执行下面算法时,算法的时间复杂度为()。
for(i=n-1;i>=0;i--)for(j=0;j<i;j++) S;(A)、n2(B). O(nlgn) (C). O(n) (D). O(n2)3.折半查找法适用于()。
(A)、有序顺序表(B)、有序单链表(C)、有序顺序表和有序单链表都可以(D)、无限制4.顺序存储结构的优势是()。
(A)、利于插入操作(B)、利于删除操作(C)、利于顺序访问(D)、利于随机访问5.深度为k的完全二叉树,其叶子结点必在第()层上。
(A)、k-1 (B)、k (C)、k-1和k (D)、1至k6.具有60个结点的二叉树,其叶子结点有12个,则度过1的结点数为()(A)、11 (B)、13 (C)、48 (D)、377.图的Depth-First Search(DFS)遍历思想实际上是二叉树()遍历方法的推广。
(A)、先序(B)、中序(C)、后序(D)、层序8.在下列链队列Q中,元素a出队的操作序列为()(A)、p=Q.front->next; p->next= Q.front->next;(B)、p=Q.front->next; Q.front->next=p->next;(C)、p=Q.rear->next; p->next= Q.rear->next;(D)、p=Q->next; Q->next=p->next;9. Huffman树的带权路径长度WPL等于()(A)、除根结点之外的所有结点权值之和(B)、所有结点权值之和(C)、各叶子结点的带权路径长度之和(D)、根结点的值10.线索二叉链表是利用()域存储后继结点的地址。
数据结构期末考试题及答案

数据结构期末考试题及答案一、选择题(每题2分,共20分)1. 在数据结构中,线性表的顺序存储结构通常使用什么数据结构来实现?A. 链表B. 数组C. 栈D. 队列答案:B2. 以下哪个是二叉树的性质?A. 每个节点最多有两个孩子B. 每个节点最多有三个孩子C. 每个节点最多有四个孩子D. 每个节点最多有五个孩子答案:A3. 在图的遍历算法中,深度优先搜索(DFS)和广度优先搜索(BFS)的区别是什么?A. DFS使用队列,BFS使用栈B. DFS使用栈,BFS使用队列C. DFS和BFS都使用栈D. DFS和BFS都使用队列答案:B...20. 以下哪个排序算法的时间复杂度为O(n^2)?A. 冒泡排序B. 选择排序C. 插入排序D. 所有上述排序算法答案:D二、简答题(每题10分,共30分)1. 简述链表和数组的区别。
答案:链表和数组都是用来存储数据的线性数据结构。
数组是连续的内存空间,可以随机访问,但插入和删除操作效率较低;链表由一系列节点组成,每个节点包含数据部分和指向下一个节点的指针,不支持随机访问,但插入和删除操作较为高效。
2. 什么是递归?请给出一个递归算法的例子。
答案:递归是一种算法设计技术,它允许函数调用自身来解决问题。
递归通常包含基本情况和递归情况。
例如,计算阶乘的递归算法:f(n) = n * f(n-1),其中基本情况是f(1) = 1。
...三、算法设计题(每题25分,共50分)1. 给定一个整数数组,请设计一个算法找出数组中的第k大元素。
答案:可以采用快速选择算法,类似于快速排序的划分过程,通过随机选择一个元素作为基准,将数组分为两部分,一部分包含比基准大的元素,另一部分包含比基准小的元素。
然后根据k与基准元素的位置关系,决定是继续在左侧子数组还是右侧子数组中进行查找。
2. 描述如何使用哈希表解决字符串匹配问题。
答案:哈希表可以用于实现字符串匹配的KMP算法。
首先,构建模式字符串的前缀函数,该函数用于记录模式字符串中每个位置的最长相同前缀和后缀的长度。
2021国家开放大学电大本科《数据结构》期末试题及答案

2021国家开放大学电大本科《数据结构》期末试题及答案(试卷号:1252)一、单项选择题(每小题3分,共30分)1.以下说法不正确的是()。
A. 线性表的链式存储结构不必占用连续的存储空间B. -种逻辑结构只能有唯一的存储结构C. 一种逻辑结构可以有不同的存储结构D. 线性表的顺序存储结构必须占用连续的存储空间2.单向链表所具备的特点之一是()。
A. 可以随机访问表中任一结点B. 需要占用连续的存储空间C. 插入元素和删除元素的操作不需要移动元素D. 可以通过指向某元素的指针操作,直接访问到该结点的直接前驱结点3.线性结构中数据元素的位置之间存在()的关系。
A. 多对多B. 一对多C. 一对一D. 每一个元素都有一个直接前驱和一个直接后继在一个单向饶表中・P和q分别是指向结点类型的指针.要删除p所指结点的百援后维结点,可执行().A. >ncxtip~>nexr~q —>nextR q=pip=q—>rwxtC. q=p —>nrxl;p—>ntxt = qD. q = p;p—>next = q5 .设有带头纳点的旦头指针为head的非空的羊向也表,指针p折向其尾结点.要使该单向饨表成为不带头结点的单向循环锤表.则可利用下述语句s he a d=head->ncxt;ffi().A. p33 headB. p= NULLC. p—2>next—headD. hcad=»p6:元素2().14.160.180按顺序依次进栈.则该找的不可能输出序列是((迎栈出枝可以交替进行).A. 180.l60tH.20 B, 20,14.160,18()C. 180,160.20.14 I). 14.20.180.1607 .设有一个15阶的•对林加阵A 《华一个元素为5・.).采用压端存储的方式.将其下三角 部分以行序为卜:序存储到一雄数tfl H 中(数坦下标从】井婿),则炬仰中元素Hv.i 在一雄散出 B 中的下坏J8K ).8.设 棵4 n 个叶纳点的二又树.度数为1的结点有4个.则成柯共有(〉个靖点.K 2n+3C2n4-29. 役根靖点所在层为第-层,-棵具有5层的完全二叉树,感后一层有6个结点・恻1安同感共有( )个拍点・15已知加图1所示的一个图.若从顶点&出发,按深度优先搜京法进行遍历,则可能得到的一种T#点序列为( >•-A.abecdlg C. aebcldg11. 把数据存储到计算机中.并具体体现数据元素间的造料关系称为 靖构.12. 设有一个长度为22的Iffi 序表,要JM 除第8个元素需移动元震的个数为. 13. 在一^二叉何中.若编号为i 的结点存在右孩f •则右孩孑的整序海号为・ 14. 说一摞吩夫曼树共有18个非叶结点•则该树慈共有 个结点・ 15. 校元素的进,出栈次序是:后进.16. 在对10个记录的序列(8,36.19,7B,L1O.53.45.27.68〉迪行直接捅入措序时,当把D. 2n + -1K atrfebdgD. nrdfcbg评卷人二.填空IH (每小题2分.共24分)第6个延承10抽入别&序衣时.为寸找隔人元素间需比较 --------------- 次・\7. n 个元京进行》1泡法检序・通1T 需要避打« I M9W 泡,武中串i 48K 他旌1■要罐行 _______ 次元K 间的比较. —低序列7.LL2・S.3.B.6 III t\ ftttfll-次H 并后的M 眼序列肥19. 中序iUffi •»W <4 fS W ,个"序序列・ 20. 广义A (hUb.a)«f»e«((id)»k))的保fltJK _ _• 21. _ 姑知中.敢据元素向存在・・对霉的关系.22. 字符申・l M boijin||M .42B M brf .M 3--brifnng M .A 1 *"MC M 小的是 --------------------23. 设庄我&为(D 岫出切I 述在也如tt 行折半介枚ME 应的判定树也中靖盘用下抓5小). (2) 说明不成功食成元庶45隔鹭弗过多少次比枚?(3) 求在牌慨骡* (1卜.■成功有我的平均比较次也,,24.⑴ micl*的炸字中列为(37,67.43.25.27.32).tft 出柯用地抑序(坝仲元素H M 小无K )的方维债0的初的地(嘤求以兜金二乂 W«H£)・⑵对关峥亨序列(40.73.49.3l.3JM7>果用快速{•序.帝山以第一个。
数据结构期末考试题及答案

数据结构期末考试题及答案一、选择题(每题2分,共10题)1. 数据结构是指()A. 存储和组织数据的方式B. 对数据进行计算和处理的方法C. 数据的物理表示形式D. 数据的逻辑结构答案:A. 存储和组织数据的方式2. 在数据结构中,栈是一种()A. 先进先出的数据结构B. 后进先出的数据结构C. 随机存取的数据结构D. 按键值查找的数据结构答案:B. 后进先出的数据结构3. 下列哪种数据结构不支持随机访问?()A. 队列B. 栈C. 数组D. 链表答案:D. 链表4. 在二叉树中,每个节点最多可以有几个子节点?()A. 0B. 1C. 2D. 无限多答案:C. 25. 在图的表示方法中,邻接矩阵适用于()A. 稠密图B. 稀疏图C. 有向图D. 无向图答案:A. 稠密图6. 下列排序算法中,最坏情况时间复杂度为O(nlogn)的是()A. 冒泡排序B. 插入排序C. 快速排序D. 选择排序答案:C. 快速排序7. 广度优先搜索算法用于()A. 求最短路径B. 求全排列C. 求最小生成树D. 求图的连通分量答案:A. 求最短路径8. 哈希表的查找时间复杂度为()A. O(1)B. O(n)C. O(logn)D. O(n^2)答案:A. O(1)9. AVL树是一种()A. 无序树B. 有序树C. 平衡树D. 非平衡树答案:C. 平衡树10. 以下哪个不属于基本的查找算法?()A. 二分查找B. 插值查找C. 散列查找D. 顺序查找答案:C. 散列查找二、填空题(每题4分,共4题)11. 下列不是线性表的是()答案:二叉树12. 在冒泡排序中,每一轮的比较次数是________答案:n-113. 在堆排序中,堆的建立时间复杂度为________答案:O(n)14. 从一个顶点到其余各顶点的最短路径算法是________答案:Dijkstra算法三、简答题(每题10分,共3题)15. 请简要说明栈的应用场景,并给出一个具体实例。
1252《数据结构(本)》电大期末试题及其答案

《数据结构(本)》期末综合练习题一、单选选择题1.栈和队列的共同特点是(C)。
A. 都是先进先出B. 都是操作受限的线性结构C. 都是先进后出D. 元素都可以随机进出2.数据的存储结构包括数据元素的表示和(C)。
A. 数据处理的方法B. 数据元素的类型C. 数据元素间的关系的表示D. 相关算法3.对一个栈顶指针为top的链栈进行入栈操作,通过指针变量p生成入栈结点,则执行p=(struct node *)malloc(sizeof(struct node);p->data=a;和(C)。
A. top->next=p; p=top;B. p->next=top; p=top;C. p->next=top; top=p;D. top=top->next; p=top;4.树状结构中数据元素的位置之间存在(B)的关系。
A. 每一个元素都有一个直接前驱和一个直接后继B. 一对多C. 一对一D. 多对多5.设头指针为head的非空的单向链表,指针p指向尾结点,则通过以下操作(D)可使其成为单向循环链表。
A. head = p;B. p=head;C. p->next = NULL ;D. p->next=head;6.设有一个长度为26的顺序表,要插入一个元素,并使它成为新表的第6个元素,需移动元素的个数为(D)。
A. 22B. 19C. 20D. 217.一种逻辑结构(C)。
A. 与存储该逻辑结构的计算机相关B. 是指某一种数据元素的性质C. 可以有不同的存储结构D. 只能有唯一的存储结构8.头指针为head的带头结点的单向循环链表,p所指向尾结点,要使该链表成为不带头结点的单向循环链表,可执行head=head->nex;和(A)。
A. p->next=head;B. p= head->nextC. head->next=pD. head->next=p->next9.把数据存储到计算机中,并具体体现数据元素间的逻辑结构称为(D)。
2020-2021学年第一学期计算机科学与技术专业《数据结构》期末考试题及答案(试卷B)

XXX大学2020-2021学年第一学期计算机科学与技术专业《数据结构》期末考试题及答案(试卷B)一、填空题(每空1.5分,共30分)。
⒈任何一个算法的设计取决于选定的数据(逻辑)结构,而算法的实现依赖于采用的。
⒉数据结构是一门研究的程序设计问题中计算机的操作对象以及它们之间的等等的学科。
⒊带头结点的单向链表L为空的判定条件是;非空的循环单链表head的尾结点p满足条件。
⒋栈和队列是两种特殊的线性表,栈的特点是,栈的典型应用有和。
⒌在具有n个单元的循环队列中,队列满时共有个元素。
⒍若串的长度不能确定,可采用动态存储结构,为串值分配一个存储空间,同时建立一个串的描述子以指示串值的长度和串在存储空间中的位置,称该结构为。
⒎稀疏矩阵一般的压缩存储方法有两种,即和十字链表。
⒏二维数组A[10][20]采用列序为主方式存储,每个元素占10个存储单元,且A[0][0]的存储地址是2000,则A[6][12]的地址是。
⒐一棵高度为h的满二叉树共有个终端结点。
⒑已知一棵完全二叉树的第5层有3个结点,其叶子结点数是。
⒒具有8个顶点的有向完全图有条弧。
⒓在无向图G的邻接矩阵A中,若A[i][j]等于1,则A[j][i]等于。
⒔对线性表进行二分查找时,要求线性表必须以方式存储,且结点按关键字排列。
⒕在分块查找方法中,首先查找索引,然后再查找相应的。
⒖与快速排序和堆排序相比,归并排序的最大特点是,它是一种的排序方法。
二、判断题(每小题1分,共10分)若正确,填入“T”,否则填入“F”。
⒈线性表的逻辑顺序与存储顺序总是一致的。
();⒉一个栈的入栈序列是12345,则栈的输出序列12345是不可能的。
();⒊将递归算法转换成对应的非递归算法时,通常需要使用栈。
();⒋设有两个串p和q,求q在p中首次出现的位置的运算称作求子串。
();⒌二维数组是其数据元素为线性表的线性表。
();⒍线索二叉树是一种逻辑结构。
();⒎深度为K的完全二叉树至少有2K-1个结点。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电大《数据结构》2020-2021期末试题及答案一、单项选择题1. 一个数组元素a 与( A )的表示等价。
A. *(a+i)B. a+iC. *a+iD. &a+I2.执行下面程序段时,执行S语句的次数为( D )。
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)/23. 当一个作为实际传递的对象占用的存储空间较大并可能被修改时,应最好说明为( B ),以节省参数值的传输时间和存储参数的空间。
A. 基本类型B. 引用型C. 指针型D. 常值引用型4. 输出一个二维数组b[m][n]中所有元素值的时间复杂度为( D )。
A. O(n)B. O(m+n)C. O(n2)D. O(m*n)5. 某算法仅含程序段1和程序段2,程序段1的执行次数3n2,程序段2的执行次数为0.01n3,则该算法的时间复杂度为( C )。
A. O(n)B. O(n2)C. O(n3)D. O(1)6. 多维数组实际上是由嵌套的( A )实现的。
A. 一维数组B. 多项式C. 三元组表D. 简单变量7. 在一个长度为n的顺序表中删除第i个元素(0≤i≤n-1)时,需要从前向后依次前移( C )个元素。
A. n-iB. n-i+1C. n-i-1D. i8. 在一个长度为n的顺序表的任一位置插入一个新元素的渐进时间复杂度为( A )。
A. O(n)B. O(n/2)C. O(1)D. O(n2)9. 设有一个n´n的对称矩阵A,将其上三角部分按行存放在一个一维数组B中,A[0][0]存放于B[0]中,那么第i行的对角元素A存放于B中( C )处。
A. (i+3)*i/2B. (i+1)*i/2C. (2n-i+1)*i/2D. (2n-i-1)*i/210. 不带头结点的单链表first为空的判定条件是( A )。
A. first == NULL;B. first->link == NULL;C. first->link == first;D. first != NULL;11. 设单链表中结点的结构为(data, link)。
已知指针p所指结点不是尾结点,若在*p之后插入结点*s,则应执行的操作是( D )。
A.s->link=p; p->link=s;B. p->link=s; s->link=p;C.s->link=p->link; p=s;D. s->link=p->link; p->link=s;12. 设单循环链表中结点的结构为(data, link),且rear是指向非空的带表头结点的单循环链表的尾结点的指针。
若想删除链表第一个结点,则应执行的操作是( D )。
A.s = rear; rear = rear->link; delete s;B.rear = rear->link; delete rear;C.rear = rear->link->link; delete rear;D.s = rear->link->link; rear->link->link = s->link; delete s;二、填空题1. 数据结构包括逻辑结构、(存储结构)和数据的运算三个方面。
2. 基本数据类型是计算机已经实现了的(数据结构)。
3. 面向对象的特征应包括对象、类、(继承)、消息通信。
4. 模板类是一种数据抽象,它把(数据类型)当作参数,可以实现类的复用。
5. 在程序运行过程中不能扩充的数组是(静态)分配的数组。
这种数组在声明它时必须指定它的大小。
6. 若设一个n´n的矩阵A的开始存储地址LOC(0, 0) 及元素所占存储单元数d已知,按行存储时其任意一个矩阵元素a[j]的存储地址为(LOC(0,0)+(i*n+j)*d)。
7. 将一个n阶对称矩阵A的上三角部分按行压缩存放于一个一维数组B中,A[0][0]存放于B[0]中,则A[I][J]在I≤J时将存放于数组B的(2n-I-1)*I/2+J)位置。
8. 若设串S = “documentHash.doc\0”,则该字符串S的长度为(16)。
9. 在链表中进行插入和(删除)操作的效率比在顺序存储结构中进行相同操作的效率高。
10. 单链表中逻辑上相邻的结点而在物理位置上(不一定)相邻。
11. 若设L是指向带表头的单链表, 语句 L->link=L->link->link的作用是(删除)单链表中的第一个结点。
三、判断题(对/错)1. 算法和程序原则上没有区别,在讨论数据结构时二者是通用的。
错2. 只有用面向对象的计算机语言才能描述数据结构算法。
错3. 数组是一种静态的存储空间分配,就是说,在程序设计时必须预先定义数组的数据类型和存储空间大小,由编译程序在编译时进行分配。
错4. 顺序表和一维数组一样,都可以按下标随机(或直接)访问。
对5. 用字符数组存储长度为n的字符串,数组长度至少为n+1。
对6. 在线性链表中删除中间的结点时,只需将被删结点释放。
错7. 链式栈与顺序栈相比, 一个明显的优点是通常不会出现栈满的情况。
对8. 在使用后缀表示实现计算器类时用到一个栈的实例, 它的作用是暂存运算器对象。
对四、运算题1. 对于一个n´n的矩阵A的任意矩阵元素a[j],按行存储时和按列存储时的地址之差是多少。
(设两种存储时的开始存储地址均为LOC(0, 0),元素所占存储单元数均为d)按行存储时与按列存储时,计算A[j]地址的公式分别为LOC( i, j ) = LOC(0, 0) + ( i*n + j ) * d及LOC’( i, j ) = LOC(0, 0) + ( j*n + i) * d两者相减,得LOC(i,j) –LOC’(i,j) = LOC(0,0)+(i*n+j)*d–LOC(0,0)–(j*n+i)*d=(i-j)*(n-1)*d2. 设有一个10´10的矩阵A,将其下三角部分按行存放在一个一维数组B中,A[0][0]存放于B[0]中,那么A[8][5]存放于B中什么位置。
根据题意,矩阵A中当元素下标I与J满足I≥J时,任意元素A[I][J]在一维数组B中的存放位置为I * (I + 1) / 2 + J,因此,A[8][5]在数组B中位置为8 * (8 + 1) / 2 + 5 = 41。
3. 设有一个二维数组A[11][6],按行存放于一个连续的存储空间中,A[0][0]的存储地址是1000,每个数组元素占4个存储字,则A[8][4]的地址在什么地方。
对于二维数组,若第一、第二维的元素个数为m和n,每个元素所占存储字数为d,首地址为LOC(0, 0),则对于任一数组元素A[j],它的存储地址为:LOC(i, j) = LOC(0, 0) + (i * n + j) * d根据题意,LOC(8, 4) = LOC(0, 0) + (8 * 6 + 4) * 4 = 1000 + 52 * 4 = 1208。
4. 假定一棵二叉树的广义表表示为A(B(,D(G)),C(E,F)),分别写出对它进行前序、中序、按层遍历的结果。
前序:A,B,D,G,C,E,F中序:B,G,D,A,E,C,F按层:A,B,C,D,E,F,G5. 已知一棵二叉树的中序和后序序列如下,求该二叉树的前序序列。
中根序列:c,b,d,e,a,g,i,h,j,f后根序列:c,e,d,b,i,j,h,g,f,a先根序列:a,b,c,d,e,f,g,h,i,j五、算法分析题1. 指出算法的功能并求出其时间复杂度。
void matrimult ( int a[M][N], int b[N][L], int c[M][L] ){ //M、N、L均为全局整型常量int i, j, k;for ( i = 0; i < M; i++ )for ( j = 0; j < L; j++ ) c[j] = 0;for ( i = 0; i < M; i++ )for ( j = 0; j < L; j++ )for ( k = 0; k < N; k++ )c[j] += a[k] * b[k][j];}功能为:矩阵相乘,即a[M][N]×b[N][L]→c[M][L]。
时间复杂性为:O(M×N×L)。
2. 设字符串String具有下列操作:int Length ( ) const; //计算字符串的长度char getData ( k ); //提取字符串第k个字符的值若字符串Tar的值为“a b a b c a b c a c b a b”,Pat的值为“a b c a c”时,给出算法执行后函数返回的结果。
#i nclude “String.h”int unknown ( String& Tar, String& Pat ) const {for ( int i = 0; i <= Tar.Length( ) – Pat.Length( ); i++ ) {int j = 0;while ( j < Pat.Length( ) )if ( Tar.getData (i+j) == Pat.getData (j) ) j++;else break;if ( j == Pat.Length( ) ) return i;}return -1;}算法执行的结果是:函数返回值等于5。
该算法即字符串的模式匹配。
3. 设单链表结点的结构为LNode=(data,link),阅读下面的函数,指出它所实现的功能。
int AA(LNode *Ha){ //Ha为指向带表头附加结点的单链表的表头指针int n=0;LNode *p=Ha->link;while(p) {n++;p=p->link;}return(n);}算法功能:计算单链表的长度或计算单链表中结点的个数。
4. 写出下列程序段的输出结果:void main(){stack S;char x,y;S.InitStack( );x="c";y="k";S.Push(x); S.Push("a"); S.Push(y);S.Pop(S,x); S.Push("t"); S.Push("s");while(!S.IsEmpty( )) { S.Pop(y); cout<cout<<Y<}//main运行结果:stack六、算法设计题1. 设有两个整数类型的顺序表A(有 m个元素)和B(有n个元素),其元素均以升序排列。