南京工程学院数据结构样卷09级加答案

合集下载

2009年《数据结构》试卷A答案

2009年《数据结构》试卷A答案

西华大学课程考试参考答案(A卷)课程代码: 8401801 试卷总分: 100 分一、单项选择题参考答案及评分标准:(本大题共20个小题,每小题2分,共40分)评分标准:选对一题得2分,不选或选错得0分。

1-5:CBACC 6-10:CCBDB 11-15:ABCCD 16-20:CADDC二、算法理解题参考答案及评分标准:(本大题共3个小题,第1、2小题各7分,第3小题6分,共20分)评分标准:请根据各解答步骤酌情给分。

1. 解:构造过程各图(略),最后结果为:2. 解:设权w=(5,29,7,8,14,23,3,11),可构造一棵赫夫曼树如下图所示。

所得赫夫曼编码为:A: 0110B: 10C: 1110D: 1111E: 110F: 00G: 0111H: 0103. 解:(1)希尔排序第一趟(增量d=5)排序后 7、12、36、23、12、51、60、55、72、49第二趟(增量d=3)排序后 7、12、36、23、12、51、49、55、72、60第三趟(增量d=1)排序后 7、12、12、23、36、49、51、55、60、72(2)归并排序第一趟排序后 12、51、23、55、7、49、36、60、12、72第一趟排序后 12、23、51、55、7、36、49、60、12、72第三趟排序后 7、12、23、36、49、51、55、60、12、72第四趟排序后 7、12、12、23、36、49、51、55、60、72三、算法设计题参考答案及评分标准:(本大题共4个小题,每小题10分,共40分)评分标准:请根据编程情况酌情给分。

1. 参考答案示例:void DelInsert(LinkList &L){∥本算法将带头结点的非空单链表L中数据域值最小的那个结点移到链表的最前面。

p=L->next;∥p是链表的工作指针pre=L;∥pre指向链表中数据域最小值结点的前驱。

q=p;∥q指向数据域最小值结点,初始假定是首元结点while (p->next!=NULL){ if(p->next->data<q->data){ pre=p;q=p->next;} ∥找到新的最小值结点 p=p->next;}if (q!=L->next){ pre->next=q->next;∥将最小值结点从链表上摘下q->next= L->next;∥将q结点插到链表最前面L->next=q;}}//DelInsert2. 参考答案示例:void Count(BiTree T,int &n0,int &n){//统计二叉树T上叶结点数n0和非叶结点数n。

(完整word版)数据结构试题集(包含答案完整版)

(完整word版)数据结构试题集(包含答案完整版)

第一章概论一、选择题1、研究数据结构就是研究(D )。

A. 数据的逻辑结构B。

数据的存储结构C. 数据的逻辑结构和存储结构D。

数据的逻辑结构、存储结构及其基本操作2、算法分析的两个主要方面是( A )。

A。

空间复杂度和时间复杂度 B. 正确性和简单性C。

可读性和文档性D。

数据复杂性和程序复杂性3、具有线性结构的数据结构是( D )。

A。

图B。

树C。

广义表D。

栈4、计算机中的算法指的是解决某一个问题的有限运算序列,它必须具备输入、输出、( B )等5个特性。

A. 可执行性、可移植性和可扩充性B。

可执行性、有穷性和确定性C。

确定性、有穷性和稳定性 D. 易读性、稳定性和确定性5、下面程序段的时间复杂度是( C )。

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)6、算法是(D )。

A。

计算机程序 B. 解决问题的计算方法C。

排序算法 D. 解决问题的有限运算序列7、某算法的语句执行频度为(3n+nlog2n+n2+8),其时间复杂度表示( C )。

A。

O(n) B. O(nlog2n) C。

O(n2) D. O (log2n)8、下面程序段的时间复杂度为( C ).i=1;while(i<=n)i=i*3;A. O(n)B。

O(3n) C。

O(log3n) D. O(n3)9、数据结构是一门研究非数值计算的程序设计问题中计算机的数据元素以及它们之间的()和运算等的学科。

A. 结构B。

关系C。

运算D。

算法10、下面程序段的时间复杂度是(A )。

i=s=0;while(s<n){i++;s+=i;}A. O(n) B。

O(n2)C。

O(log2n)D。

O(n3)11、抽象数据类型的三个组成部分分别为(A)。

A. 数据对象、数据关系和基本操作B. 数据元素、逻辑结构和存储结构C. 数据项、数据元素和数据类型D. 数据元素、数据结构和数据类型12、通常从正确性、易读性、健壮性、高效性等4个方面评价算法的质量,以下解释错误的是()。

数据构造本科试题及答案

数据构造本科试题及答案

数据构造本科试题及答案一、选择题(每题2分,共10分)1. 在数据结构中,以下哪个选项不是基本数据结构?A. 数组B. 链表C. 栈D. 树答案:D2. 以下哪种排序算法的时间复杂度为O(nlogn)?A. 冒泡排序B. 选择排序C. 快速排序D. 插入排序答案:C3. 在二叉树的遍历算法中,先访问根节点,再访问左子树,最后访问右子树的遍历方式被称为:A. 先序遍历B. 中序遍历C. 后序遍历D. 层序遍历答案:A4. 哈希表的冲突解决技术不包括以下哪一项?A. 开放寻址法B. 链地址法C. 再哈希法D. 直接寻址法答案:D5. 在图的遍历算法中,深度优先搜索(DFS)使用的辅助数据结构是:A. 队列B. 栈C. 链表D. 数组答案:B二、填空题(每题2分,共10分)1. 在数据结构中,______是一种允许在表的任一位置插入或删除元素的数据结构。

答案:链表2. 堆是一种特殊的完全二叉树,其中每个节点的值都大于或等于其子节点的值,这种堆被称为______。

答案:最大堆3. 在数据库中,______是一种用于存储和管理数据的技术,它允许用户通过键值对来访问和操作数据。

答案:哈希表4. 动态数组在插入元素时,如果数组已满,需要进行______操作,以确保有足够的空间存储新元素。

答案:扩容5. 在图的表示方法中,邻接矩阵和______是两种常见的表示方法。

答案:邻接表三、简答题(每题5分,共20分)1. 请简述二叉搜索树(BST)的特点。

答案:二叉搜索树是一种特殊的二叉树,它满足以下性质:对于树中的每个节点,其左子树中的所有节点的值都小于该节点的值,其右子树中的所有节点的值都大于该节点的值。

此外,左右子树也必须分别为二叉搜索树。

2. 什么是图的深度优先搜索(DFS)?它有哪些应用场景?答案:深度优先搜索是一种用于遍历或搜索树或图的算法。

它从一个节点开始,尽可能深地搜索树的分支。

DFS可以用于解决许多问题,如寻找路径、检测图中的环、拓扑排序等。

数据结构(含答案)

数据结构(含答案)

数据结构(含答案)数据结构数据结构是计算机科学的基础知识之一,它在计算机领域中有着重要的地位。

本文将介绍数据结构的概念、常见的数据结构类型以及其应用。

同时,还会对一些常见的数据结构问题进行解答。

一、概念简介在计算机科学中,数据结构是指存储和组织数据的方式。

它关注数据元素之间的关系,以及如何对数据进行插入、删除和查询等操作。

数据结构可以分为线性结构和非线性结构两大类。

1.1 线性结构线性结构是最简单的一种数据结构,它的特点是数据元素之间存在一对一的关系。

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

- 数组是一种连续存储数据元素的结构,可以通过下标快速访问元素。

但是数组的大小固定,插入和删除操作比较耗时。

- 链表是一种通过指针连接数据元素的结构,可以动态地进行插入和删除操作。

但是链表的随机访问效率较低。

- 栈是一种先进后出(LIFO)的数据结构,只能在栈顶进行插入和删除操作。

常见的应用场景包括函数调用、表达式求值等。

- 队列是一种先进先出(FIFO)的数据结构,插入操作在队尾进行,删除操作在队头进行。

常见的应用场景包括任务调度、消息传递等。

1.2 非线性结构非线性结构中,数据元素之间的关系不是一对一的,包括树和图等结构。

- 树是一种层次结构,由节点和边组成。

树的常见应用包括文件系统、数据库索引等。

- 图是由节点和边组成的网络结构,节点之间的关系可以是任意的。

图的应用非常广泛,包括社交网络、路由算法等。

二、数据结构问题解答2.1 如何判断一个链表中是否存在环?使用快慢指针可以判断一个链表中是否存在环。

假设有两个指针,一个每次移动一步,另一个每次移动两步。

如果链表中存在环,那么快指针迟早会追上慢指针。

如果快指针到达链表尾部时都没有追上慢指针,那么链表中不存在环。

2.2 如何判断一个二叉树是否是平衡二叉树?平衡二叉树是一种左子树和右子树高度差不超过1的二叉树。

判断一个二叉树是否是平衡二叉树可以使用递归的方法。

数据结构考试试题库含答案解析

数据结构考试试题库含答案解析

数据结构考试试题库含答案解析数据结构习题集含答案⽬录⽬录 (1)选择题 (2)第⼀章绪论 (2)第⼆章线性表 (4)第三章栈和队列 (6)第四章串 (7)第五章数组和⼴义表 (8)第六章树和⼆叉树 (8)第七章图 (11)第⼋章查找 (13)第九章排序 (14)简答题 (19)第⼀章绪论 (19)第⼆章线性表 (24)第三章栈和队列 (26)第四章串 (28)第五章数组和⼴义表 (29)第六章树和⼆叉树 (31)第七章图 (36)第⼋章查找 (38)第九章排序 (39)编程题 (41)第⼀章绪论 (41)第⼆章线性表 (41)第三章栈和队列 (52)第四章串 (52)第五章数组和⼴义表 (52)第六章树和⼆叉树 (52)第七章图 (52)第⼋章查找 (52)第⼀章绪论1.数据结构这门学科是针对什么问题⽽产⽣的?(A )A、针对⾮数值计算的程序设计问题B、针对数值计算的程序设计问题C、数值计算与⾮数值计算的问题都针对D、两者都不针对2.数据结构这门学科的研究内容下⾯选项最准确的是(D )A、研究数据对象和数据之间的关系B、研究数据对象C、研究数据对象和数据的操作D、研究数据对象、数据之间的关系和操作3.某班级的学⽣成绩表中查得张三同学的各科成绩记录,其中数据结构考了90分,那么下⾯关于数据对象、数据元素、数据项描述正确的是(C )A、某班级的学⽣成绩表是数据元素,90分是数据项B、某班级的学⽣成绩表是数据对象,90分是数据元素C、某班级的学⽣成绩表是数据对象,90分是数据项D、某班级的学⽣成绩表是数据元素,90分是数据元素4.*数据结构是指(A )。

A、数据元素的组织形式B、数据类型C、数据存储结构D、数据定义5.数据在计算机存储器内表⽰时,物理地址与逻辑地址不相同,称之为(C )。

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

数据结构样卷答案09级

数据结构样卷答案09级

③ 改正:函数体最后增加以下一句: element[len] = '\0'; (3) 深拷贝创建二叉树时,没有为各结点建立指向父母结点的链。改正如下: ① 当 TriNode 构造函数不指定 parent 时 template <class T> TriNode<T>* TriBinaryTree<T>::copy(TriNode<T> *p) { TriNode<T> *q=NULL; if (p!=NULL) { q = new TriNode<T>(p->data); q->left = copy(p->left); if (q->left!=NULL) q->left->parent = q; q->right = copy(p->right); if (q->right!=NULL)
//一次匹配
} if (q!=NULL) { front=start; start=start->next; } else { q=list.head->next;
南京工程学院
试题评分标准及参考答案(样)
2010 / 2011 学年第 2 学期 课程所属部门: 计算机工程学院 使用班级:计算机专业 2009 级各班 课程名称: 数据结构 制作人:叶核亚、黄纬 2011 年 5 月 24 日 共7页 第 1 页
一.
(2) (3) (4) (5) (6) (7)
填空题(26 分,每空 2 分)
pk 与 p j 比较
0 a -1
1 b 0 ≠
2 c 0 ≠ 0
3 a 0 = -1
4 a 1 = 1

2009年10月全国自考数据结构真题及答案

2009年10月全国自考数据结构真题及答案

更多优质自考资料尽在百度贴吧自考乐园俱乐部(/club/5346389)欢迎❤加入...欢迎❤交流...止不住的惊喜等着你.........2009年10月全国自考数据结构真题一、单项选择题(本大题共15小题,每小题2分,共30分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。

错选、多选或未选均无分。

1.按值可否分解,数据类型通常可分为两类,它们是()A.静态类型和动态类型B.原子类型和表类型C.原子类型和结构类型D.数组类型和指针类型答案:C2.A. AB. BC. CD. D答案:C3.指针p、q和r依次指向某循环链表中三个相邻的结点,交换结点*q和结点*r在表中次序的程序段是()A.p->next=r;q->next=r->next;r->next=q;B.p->next=r;r->next=q;q->next=r->next;C.r->next=q;q->next=r->next;p->next=r;D.r->next=q;p->next=r;q->next=r->next;答案:A4.若进栈次序为a,b,c,且进栈和出栈可以穿插进行,则可能出现的含3个元素的出栈序列个数是()A. 3B. 5C. 6D.7答案:B5.假设以数组A[n]存放循环队列的元素,其头指针front指向队头元素的前一个位置、尾指针rear指向队尾元素所在的存储位置,则在少用一个元素空间的前提下,队列满的判定条件为()A.rear==frontB.(front+1)%n==rearC.rear+1==frontD.(rear+1)%n==front答案:D6.串的操作函数str定义为:A. 3B. 4C. 5D. 6答案:C7.二维数组A[10][6]采用行优先的存储方法,若每个元素占4个存储单元,已知元素A[3][4]的存储地址为1000,则元素A[4][3]的存储地址为()A.1020B.1024C.1036D.1240答案:A8.对广义表L= (a,())执行操作tail(L)的结果是()A.()B.(())C. aD.(a)答案:B9.已知二叉树的中序序列和后序序列均为ABCDEF,则该二叉树的先序序列为()A.FEDCBAB.ABCDEFC.FDECBAD.FBDCEA答案:A10.已知森林F={T1,T2,T3,T4,T5},各棵树Ti(i=1,2,3,4,5)中所含结点的个数分别为7,3,5,1,2,则与F对应的二叉树的右子树中的结点个数为()A. 2B. 3C.8D.11答案:D11.若非连通无向图G含有21条边,则G的顶点个数至少为()A.7B.8C.21D.22答案:B12.如图所示的有向图的拓扑序列是()A.c,d,b,a,eB.c,a,d,b,eC.c,d,e,a,bD.c,a,b,d,e答案:B13.对关键字序列(6,1,4,3,7,2,8,5)进行快速排序时,以第1个元素为基准的一次划分的结果为()A.(5,1,4,3,6,2,8,7)B.(5,1,4,3,2,6,7,8)C.(5,1,4,3,2,6,8,7)D.(8,7,6,5,4,3,2,1)答案:C14.分块查找方法将表分为多块,并要求()A.块内有序B.块间有序C.各块等长D.链式存储答案:B15.便于进行布尔查询的文件组织方式是()A.顺序文件B.索引文件C.散列文件D.多关键字文件答案:二、填空题(本大题共10小题,每小题2分,若有两个空格,每个空格1分,共20分)请在每个空格中填上正确答案。

南京工程的学院大数据结构样卷09级加详解

南京工程的学院大数据结构样卷09级加详解

数据结构09一. 填空题〔26分,每空2分〕1. 声明抽象数据类型的目的是________________________________________。

2. 结点类Node<T>有data和next域,如下数据存储结构声明分别为__________________________________和_____________________________________。

3. SString s1("aababbabac"),s2("aba");,执行如下语句后,s1字符串是______________。

s1.replaceAll(s1.substring(0,1),s2);s1.removeAll(s2.substring(0,2));4. 中缀表达式A+B*(C-D*(E+F)/G+H)-(I+J)*K的后缀表达式为______________________。

5. 设一个顺序循环队列容量为60,当front=47,rear=23时,该队列有__________个元素。

6. 二维数组a[10][8]采用行主序存储,数组首地址是1000,每个元素占用4字节,如此数组元素a[4][5]的存储地址是__________________________。

7. 一棵完全二叉树的根〔第0个〕结点层次为1,如此第100个结点的层次为_______。

8. 中根遍历序列和后根遍历序列相反的二叉树是_________________________________。

9. 由256个权值构造一棵哈夫曼树,如此该二叉树共有________________结点。

10. 由n个顶点组成的无向连通图,最多可以有_____________________条边。

11. 10个元素的排序数据序列采用折半查找的平均查找长度是〔写出算式〕_____________________________________________________。

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

数据结构09一. 填空题(26分,每空2分)1. 声明抽象数据类型的目的是________________________________________。

2. 已知结点类Node<T>有data和next域,下列数据存储结构声明分别为__________________________________和_____________________________________。

3. 已知SString s1("aababbabac"),s2("aba");,执行下列语句后,s1字符串是______________。

s1.replaceAll(s1.substring(0,1),s2);s1.removeAll(s2.substring(0,2));4. 中缀表达式A+B*(C-D*(E+F)/G+H)-(I+J)*K的后缀表达式为______________________。

5. 设一个顺序循环队列容量为60,当front=47,rear=23时,该队列有__________个元素。

6. 已知二维数组a[10][8]采用行主序存储,数组首地址是1000,每个元素占用4字节,则数组元素a[4][5]的存储地址是__________________________。

7. 已知一棵完全二叉树的根(第0个)结点层次为1,则第100个结点的层次为_______。

8. 中根遍历序列和后根遍历序列相反的二叉树是_________________________________。

9. 由256个权值构造一棵哈夫曼树,则该二叉树共有________________结点。

10. 由n个顶点组成的无向连通图,最多可以有_____________________条边。

11. 10个元素的排序数据序列采用折半查找的平均查找长度是(写出算式)_____________________________________________________。

12. 已知关键字序列为{67,41,34,10,69,24,78,54,41*},采用快速排序算法按升序排序,以第一个元素为基准值,其第一趟排序后的关键字序列为____________________________。

二. 问答题(45分,每小题5分)1. 已知目标串为"aabcbabcaabcaababc",模式串为"abcaababc",写出模式串改进的next数组;画出KMP算法的匹配过程,给出字符比较次数。

2. 什么是栈和队列?两者有何异同?什么情况下需要使用栈或队列?采用顺序存储结构的栈和队列,在进行插入、删除操作时需要移动数据元素吗?为什么?什么是队列的假溢出?为什么顺序存储结构队列会出现假溢出?怎样解决队列的假溢出问题?链式存储结构队列会出现假溢出吗?顺序存储结构的栈会出现假溢出吗?为什么?3. 已知一棵二叉树中根次序遍历序列为GCBHKAMFDJE,后根次序遍历序列为CBGHMAJEDFK,画出这棵二叉树并进行中序线索化。

4. 设一段正文由字符集{A,B,C,D,E,F,G,H}组成,其中每个字符在正文中的出现次数依次为{23,5,17,4,9,31,29,18},采用哈夫曼编码对这段正文进行压缩存储,画出所构造的哈夫曼树,并写出每个字符的哈夫曼编码。

5. 删除以下带权无向图中的顶点D,画出删除D后图的邻接矩阵表示和邻接表表示。

16. 构造以下带权无向图的最小生成树,并给出该最小生成树的代价。

7. 已知关键字序列为{16,74,60,43,54,90,46,31,29,88,71,64,50},散列表长度为11,采用除留余数法的散列函数为hash(k)=k % 11,画出采用链地址法构造的散列表,计算(写出算式)。

8. 画出对关键字序列{93,17,56,42,78,15,42*,25,19}进行希尔排序(升序)的每一趟排序过程,说明希尔排序算法的稳定性并解释原因,以及希尔排序适用于什么存储结构。

9. 将关键字序列{29,10,25,26,58,12,31,18,47}用筛选法分别建成一个最大堆和一个最小堆,写出两个堆序列并画出其对应的完全二叉树。

三. 程序阅读和改错题(15分,每小题5分)1. 阅读以下函数,回答问题。

template <class T>void CirHDoublyLinkedList<T>::concat(CirHDoublyLinkedList<T> &list){DLinkNode<T> *rear=head->prev;rear->next = list.head->next;list.head->next->prev = rear;rear=list.head->prev;rear->next = this->head;this->head->prev = rear;list.head->prev = list.head;list.head->next = list.head;}上述函数功能是什么?以下调用语句的运行结果是什么?CirHDoublyLinkedList<char> source("abcdef",6), list("xyz",3);source.concat(list);cout<<"source:"<<source<<"list:"<<list;2. 下列trim()函数欲删除当前字符串对象中的所有空格字符。

void SString::trim() //删除串对象中的所有空格字符{ int i=0;while (element[i]!=' ' && element[i]!='\0') //寻找第1个空格i++; //i记住第1个空格下标for (int j=i; element[j]!='\0'; j++)if (element[j]!=' ')element[i++] = element[j]; //非空格字符向前移动到空格字符位置len = i;}①对于以下调用语句,运行结果是什么?正确的运行结果是什么?SString str(" a bc d e f xyz");str.trim();cout<<"str="<<str<<endl;②trim()函数怎样实现所求功能?算法存在什么错误?③如何改正?3. 已知三叉链表表示的二叉树结点类TriNode声明如下:template <class T>class TriNode //二叉树的三叉链表结点类{public:T data; //数据域,保存元素TriNode<T> *parent, *left, *right; //指针域,分别指向父母、左、右孩子结点//构造结点,参数依次分别指定元素、左孩子和右孩子结点TriNode(T data, TriNode<T> *left=NULL, TriNode<T> *right=NULL){this->data = data;this->left = left;this->right = right;}};三叉链表表示的二叉树类TriBinaryTree及部分函数声明如下:class TriBinaryTree //二叉树类(三叉链表){public:TriNode<T> *root; //指向根结点TriBinaryTree(TriBinaryTree<T> &bitree); //拷贝构造函数private:3TriNode<T>* copy(TriNode<T> *p); //复制以p为根的子二叉树};template <class T>TriBinaryTree<T>::TriBinaryTree(TriBinaryTree<T> &bitree) //拷贝构造函数{this->root = copy(bitree.root);}//复制以p为根的子二叉树,返回新建子树的根结点template <class T>TriNode<T>* TriBinaryTree<T>::copy(TriNode<T> *p){TriNode<T> *q=NULL;if (p!=NULL){q = new TriNode<T>(p->data);q->left = copy(p->left);q->right = copy(p->right);}return q;}上述函数中存在什么错误?如何改正?四. 程序设计题(14分,每小题7分)1. 在带头结点的单链表类HSLinkedList中,增加以下成员函数:void HSLinkedList<T>::removeAll(HSLinkedList<T> &list) //删除所有与list匹配的子表2. 求二叉树中指定结点的层次。

51. 使数据类型的定义和实现分离,使一种定义有多种实现。

2. Node<T>*table[4]; Node<T>table[4];3. "abac"4. ABCDEF+*G/-H+*+IJ+K*-5. 366. 11487. 78. 右单支二叉树(包括空二叉树、只有根结点的二叉树) 9. 51110. n*(n-1)/2 11.9.2)4334221(101)1(1=⨯+⨯+⨯+=⨯∑=ni i n12. {41* 41 34 10 54 24} 67 {78 69}2. 栈和队列都属于线性表结构,它们是两种特殊的线性表,栈的插入和删除操作都在线性表的一端进行,所以栈的特点是“后进先出”;而队列的插入和删除操作分别在线性表的两端进行,所以队列的特点是“先进先出”。

深度优先搜索遍历算法需要使用栈作为辅助结构,广度优先搜索遍历算法需要使用队列作为辅助结构。

相关文档
最新文档