东南大学数据结构试卷
东南大学数据结构试卷A

共 11 页 第1页东 南 大 学 考 试 卷(A 卷) 课程名称 数据结构 考试学期 10-11-3 得分 适用专业 吴健雄学院610 考试形式 闭卷 考试时间长度 120分钟自 觉 遵 守 考 场 纪 律 如 考 试 作 弊 此 答卷无 效一、选择题(每题1分,共5分)1.设有一个二维数组A[m][n],如果A[0][0]的首地址为644(10进制),A[2][2]的首地址为676,每个元素占一个字节,则A[4][5]的首地址为()。
A.692 B.626 C.709 D.7242.若让元素1,2,3依次但并非连续进栈,则哪种出栈次序是不可能的()A.3,2,1 B.2,1,3C.3,1,2 D.1,2,33.设完全二叉树有82个结点,从根结点开始顺序编号,根节点为1号,其他结点自上向下,同一层次自左向右连续编号。
则第41号结点的双亲结点的编号为()A.20 B.21 C.81 D.824.采用对半搜索算法搜索长度为n的有序表,元素的平均搜索长度为()A.O(n2) B.O(n) C.O(n log2n) D.O(log2n)5.采用邻接表存储的图的深度优先遍历算法类似于二叉树的()A.中序遍历B.前序遍历C.后序遍历D.按层次遍历二、判断题(每题1分,共5分)1.邻接表只能用于有向图的存储,邻接矩阵对于有向图和无向图的存储都适用。
()2.直接选择排序是一种不稳定的排序方法。
()3.在用散列表存储关键码集合时,可以用双散列法寻找下一个空桶。
在设计再散列函数时,要求计算出的值与表的大小m互质。
()4.连通分量是无向图中的极小连通子图。
()5.若有一个叶子节点是二叉树中某子树的前序遍历结果序列的最后一个结点,它一定是该子树的中序遍历结果序列的最后一个结点。
()共11页第2页三、填空题(每空1分,10分)1.每次从表的无序部分取出一个元素,把它插入到表的有序部分的适当位置,此种排序方法叫作(1)排序;每次从表的无序部分中挑选出一个最小或最大元素,把它与表的有序部分的后一元素交换,此种排序方法叫作(2)排序。
(完整word版)数据结构试卷及答案(word文档良心出品)

注意事项:1、下面关于串的叙述中,哪一个是不正确的?( )A .串是字符的有限序列B .空串是由空格构成的串C .模式匹配是串的一种重要运算D .串既可以采用顺序存储,也可以采用链式存储 2、设无向图的顶点个数为n ,则该图最多有( )条边。
A .n-1B .n(n-1)/2C . n(n+1)/2D .0 3、以下数据结构中,( )是非线性数据结构。
A .树B .字符串C .队列D .栈 4、下面关于线性表的叙述中,错误的是哪一个?( )A .线性表采用顺序存储,必须占用一片连续的存储单元。
B .线性表采用顺序存储,便于进行插入和删除操作。
C .线性表采用链接存储,不必占用一片连续的存储单元。
D .线性表采用链接存储,便于插入和删除操作。
5、假设以数组A[m]存放循环队列的元素,其头尾指针分别为front 和rear ,则当前队列中的元素个数为( )。
A .(rear-front+m)%mB .rear-front+1C .(front-rear+m)%mD .(rear-front)%m6、在单链表指针为p 的结点之后插入指针为s 的结点,正确的操作是( )。
A .p->next=s; s->next=p->next;B .s->next=p->next; p->next=s;C .p->next=s; p->next=s->next;D .p->next=s->next; p->next=s; 7、设栈的输入序列是1,2,3,4,则( )不可能是其出栈序列。
A .1,2,4,3B .2,1,3,4C .1,4,3,2D .4,3,1,2, 8、广义表(a,(b,c),d,e )的表头和表尾分别为( )。
A .a 和(b,c),d,e B .(a )和(b,c),d,eC .a 和 ((b,c),d,e)D .(a) 和((b,c),d,e)9、栈和队都是( )A .顺序存储的线性结构B .链式存储的非线性结构C .限制存取点的线性结构D .限制存取点的非线性结构 10、从逻辑上可以把数据结构分为( )两大类。
数据结构试题库及答案

数据结构试题库及答案一、选择题(每题2分,共20分)1. 在数据结构中,线性表的顺序存储结构通常使用()来存储。
A. 链表B. 栈C. 队列D. 数组答案:D2. 以下哪个算法不是排序算法?A. 快速排序B. 归并排序C. 深度优先搜索D. 堆排序答案:C3. 在二叉树的遍历算法中,先访问根节点,然后遍历左子树,最后遍历右子树的遍历方式是()。
A. 先序遍历B. 中序遍历C. 后序遍历D. 层序遍历答案:A4. 哈希表的冲突解决方法不包括以下哪种?A. 链地址法B. 线性探测法C. 二分查找法D. 再散列法答案:C5. 在图的遍历算法中,广度优先搜索(BFS)使用的辅助数据结构是()。
A. 栈B. 队列C. 堆D. 链表答案:B6. 下列关于堆的描述中,错误的是()。
A. 堆是一种特殊的完全二叉树B. 堆中的每个节点的值都大于其子节点的值C. 堆可以用于实现优先队列D. 堆的插入操作的时间复杂度为O(log n)答案:B7. 在一个长度为n的数组中,使用二分查找算法查找一个元素的最坏情况下的时间复杂度是()。
A. O(1)B. O(n)C. O(n^2)D. O(log n)答案:D8. 以下哪个数据结构不是线性结构?A. 链表B. 栈C. 队列D. 二叉树答案:D9. 以下哪个算法是动态查找表?A. 直接索引B. 顺序查找C. 二分查找D. 哈希表答案:D10. 在图的表示方法中,邻接矩阵表示法的缺点是()。
A. 占用空间大B. 占用空间小C. 插入和删除操作复杂D. 遍历操作复杂答案:A二、填空题(每题2分,共20分)1. 在一个长度为n的数组中,使用顺序查找算法查找一个元素的时间复杂度为________。
答案:O(n)2. 一个具有n个节点的完全二叉树的高度为________。
答案:log2(n) + 1(向上取整)3. 一个长度为n的链表,删除一个节点的时间复杂度为________。
答案:O(1)4. 在图的表示方法中,邻接表表示法的缺点是________。
东南大学数据结构试卷-推荐下载

共8页
第3页
五、综合算法题(每空 2.5 分,共 55 分)
1.完善改进的归并排序算法。*this是一个待排序的表,而表L2是一个辅助的工作表,帮
助完成排序的中间步骤,最终完成*this的排序。所谓改进指在把元素序列复制到辅助表
中时,把第2个表的元素顺序逆转,这样两个待归并的表从两端开始处理,向中间归并。
可以省去检查子表是否结束的判断。
template <typename T>void Orderedlist<T>::MergeSort(int left, int rig
improvedMergeSort(L2, left, right);
template <typename T>
(1)
template <typename T>
void Orderedlist<T>::improvedMerge(Orderedlist<T> &L2, int left, int mid, int right){
} }
int s1 = left, s2 = right, t = left, k ; //s1,s2是检测指针,t是存放指针
for (k = left; k <= mid; k++){
(2)
} for (k = mid + 1; k <= right; k++){
(3) } while (t <= right){
if(L2.slist[s1] <= L2.slist[s2]) (4)
else (5)
;
2.完成二叉树前序遍历的非递归算法和层次序遍历算法操作。 //非递归前序遍历。每访问一个结点后,在向左子树遍历下去之前,利用栈记录该结点的 右子女结点的地址,以便在左子树退回时可以直接从栈顶取得右子树的根结点,继续右
计算机专业基础综合数据结构(树和二叉树)历年真题试卷汇编4

计算机专业基础综合数据结构(树和二叉树)历年真题试卷汇编4(总分:74.00,做题时间:90分钟)一、综合题(总题数:35,分数:74.00)1.(1)试找出满足下列条件的二叉树:1)先序序列与后序序列相同2)中序序列与后序序列相同3)先序序列与中序序列相同4)中序序列与层次遍历序列相同(2)已知一棵二叉树的中序序列和后序序列分别为DBEAFIHCG和DEBHIFGCA,画出这棵二叉树。
【东北大学1999六(4分)】【东南大学2000一、4(6分)】(分数:2.00)__________________________________________________________________________________________ 正确答案:(正确答案:(1)先序遍历二叉树的顺序是“根一左子树一右子树”,中序遍历“左子树一根一右子树”,后序遍历顺序是“左子树一右子树一根”,根据以上原则,本题解答如下:1)若先序序列与后序序列相同,则或为空树,或为只有根结点的二叉树。
2)若中序序列与后序序列相同,则或为空树,或为任一结点至多只有左子树的二叉树。
3)若先序序列与中序序列相同,则或为空树,或为任一结点至多只有右子树的二叉树。
4)若中序序列与层次遍历序列相同,则或为空树,或为任一结点至多只有右子树的二叉树。
(2)由中序序列DBEAFIHCG和后序序列DEBHIFGCA)解析:2.分别给出满足下列条件的二叉树。
(1)前序和中序遍历结果相同;(2)前序和中序遍历结果不相同而是相反;(3)中序和后序遍历结果相同;(4)前序和后序遍历结果相同。
【四川大学2004】【烟台大学2007四、2(8分)】(分数:2.00)__________________________________________________________________________________________ 正确答案:(正确答案:空二叉树满足题目要求,若二叉树非空,则(1)前序和中序遍历结果相同的二叉树是任一结点无左子女; (2)前序和中序遍历结果不相同而是相反的二叉树是任一结点无右子女; (3)中序和后序遍历结果相同的二叉树是任一结点无右子女; (4)前序和后序遍历结果相同的二叉树是只有根结点。
数据结构-东南大学

★数据结构是一门研究非数值计算的程序设计问题中的(A )以及它们之间的(B )和运算的学科。
A .操作对象 B .计算方法 C .逻辑存储 D .数据映象 A .结构 B .关系 C .运算 D .算法★ 试举例说明,如果两个数据结构的逻辑结构和存储结构相同,但基本运算(操作)不同,则这两个数据结构就是不同的。
例如二叉树和二叉排序树在逻辑结构上都是二叉树,都采用二叉链表形式存储,但是对于某些运算的定义不同,例如插入操作,二叉树需指明作为哪个结点的左孩子还是右孩子插入,而二叉排序树无需指明,由二叉排序树的形状决定插入位置★算法有哪些特点?为什么说一个具备了所有特点的算法,不一定就是实用的算法?答:特点:输入、输出、确定性、有穷性、有效性;一般地说,只有多项式时间度杂度的算法才是实用的。
★如何评价算法的好坏? 答:正确性(四个层面);可读性;健壮性;时空效率(复杂性)。
★程序段for (i=n-1; i>=1; i++) for (j=1; j<=i; j++) if (A[j]>A[j+1])A[j]与A[j+1]对换;其中n 为正整数,则最后一行的语句频度在最坏情况下是(D ) A. O(n) B. O(nlog2n) C. O(n3) D. O(n2)★分析以递归方式求阶乘的算法的时间复杂度。
long Factorial ( long n ) {if ( n = = 1 ) return 1; // 递归终止 else return n*Factorial ( n-1); // 递归})()1())2(()1(2))1(()1())((n O O n n T O O n T O O n T O =⨯==-+⨯=-+=★分析二分查找函数的时间复杂度。
int BinarySearch(int *a, const int x, const int n) {for(int left = 0, right = n –1; left <= right;){ int middle = (left + right)/2; switch(compare(x, a[middle])){ case ‘>’: left = middle + 1; break; // x > a[middle] ca se ‘<’: right = middle – 1; break; // x < a[middle] case ‘=’: found x; // x == a[middle] } }return –1; // not found }实例特性是数组a 中元素的个数n 。
(NEW)东南大学《935计算机专业基础》历年考研真题汇编

2000年东南大学935计算机专业基础考研 真题(数据结构、操作系统部分)
2001年东南大学935计算机专业基础考研 真题(数据结构、操作系统部分)
2002年东南大学935计算机专业基础考研 真题(数据结构、操作系统部分)
2003年东南大学935计算机专业基础考研 真题(数据结构、操作系统部分)
2014年全国硕士研究生入学统一考试计算机科学与技术学科联考计算 机学科专业基础综合真题及详解
2015年全国硕士研究生入学统一考试计算机科学与技术学科联考计算 机学科专业基础综合真题及详解
2016年全国硕士研究生入学统一考试计算机科学与技术学科联考计算 机学科专业基础综合真题及参考答案
2017年全国硕士研究生入学统一考试计算机科学与技术学科联考计算 机学科专业基础综合真题及参考答案
目 录
第一部分 东南大学935计算机专业基础历年考研真题
1993年东南大学935计算ห้องสมุดไป่ตู้专业基础考研真题(数据结构部分)
1994年东南大学935计算机专业基础考研真题(数据结构、操作系统 部分)
1995年东南大学935计算机专业基础考研真题(数据结构、操作系统 部分)
1996年东南大学935计算机专业基础考研真题(数据结构、操作系统 部分)
2010年全国硕士研究生入学统一考试计算机科学与技术学科联考计算 机学科专业基础综合真题及详解
2011年全国硕士研究生入学统一考试计算机科学与技术学科联考计算 机学科专业基础综合真题及详解
2012年全国硕士研究生入学统一考试计算机科学与技术学科联考计算 机学科专业基础综合真题及详解
2013年全国硕士研究生入学统一考试计算机科学与技术学科联考计算 机学科专业基础综合真题及详解
数据结构试题(含答案)

数据结构试题(含答案)数据结构试题(含答案)一、选择题1. 数据结构是计算机科学中的一个重要概念。
下列选项中,不属于数据结构的是:A. 数组B. 栈C. 数据库D. 链表答案:C2. 在数据结构中,栈(Stack)是一种后进先出(LIFO)的数据结构。
下列操作中,不属于栈的是:A. 入栈B. 出栈C. 遍历D. 清空栈答案:C3. 链表(Linked List)是一种常见的数据结构,它由一系列节点组成,每个节点包含两个部分:数据和指向下一个节点的指针。
下列选项中,不属于链表的是:A. 单链表B. 双链表C. 循环链表D. 二叉树答案:D4. 哈希表(Hash Table)是一种根据关键码直接访问存储位置的数据结构。
下列选项中,不属于哈希表的优点是:A. 快速查找B. 插入和删除操作效率高C. 数据无序D. 冲突较少答案:C二、填空题1. 树(Tree)是一种非线性数据结构,它由一组以边连接的节点组成。
树中每个节点最多可以有________个子节点。
答案:无限制/任意个2. 图(Graph)是由节点和连接节点的边组成的数据结构。
图中节点的度是指与该节点相连接的边的________。
答案:数量3. 广度优先搜索(BFS)和深度优先搜索(DFS)是常用的图遍历算法。
在BFS中,使用________结构来保存待访问的节点。
答案:队列4. 在二叉搜索树(Binary Search Tree)中,左子树中的每个节点的值都小于根节点的值,右子树中的每个节点的值都大于根节点的值。
这种特性称为_______________。
答案:二叉搜索树性质三、简答题1. 请简要说明线性数据结构和非线性数据结构的区别。
答案:线性数据结构是指数据元素之间存在一对一的线性关系,例如数组、栈、队列等;而非线性数据结构是指数据元素之间存在一对多或多对多的关系,例如树、图等。
线性数据结构的存储方式是连续的,非线性数据结构的存储方式是离散的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
共 8 页 第1页东 南 大 学 考 试 卷(A 卷) 课程名称 数据结构 考试学期 08-09-3 得分 适用专业 吴健雄学院电类 考试形式 半开卷 考试时间长度 120分钟 一、选择题(每题1分,共5分) 1.下面有关链栈的描述,对常规情况正确的是 ( ) A .在链头插入,链尾删除。
B .在链尾插入,链头删除。
C .在链尾插入,链尾删除。
D .在链头插入,链头删除。
2.对线性表进行对半搜索时,要求线性表必须( ) A .以数组方式存储 B .以数组方式存储并按关键码排序 C .以链表方式存储 D .以链表方式存储并按关键码排序 3.对包含n 个元素的散列表进行搜索,平均搜索长度为( ) A .O(log 2n) B .O(n) C .不直接依赖于n D .三者均不是 4.在同一个有向图中,所有结点的入度和与出度和之比为( ) A .1 B .2 C .1/2 D .都不对 5.在具有n 个顶点的无向图中,要连通全部顶点至少需要( )条边。
A .n B .n+1 C .n-1 D .n/2 二、判断题(每题1分,共5分) 1.链式存储的线性表所有存储单元的地址可连续可不连续。
( ) 2.存储有向图的邻接矩阵是对称的,所以可以仅存矩阵上三角部分。
( ) 3.在采用闭散列法解决冲突时,不要立刻做物理删除,否则搜索时会出错。
( )4.二叉树中序遍历结果序列的最后一个结点必是前序遍历的最后一个结点。
( )5.堆排序的时间复杂度是O(n log 2 n),但需要额外存储空间。
( )三、填空题(每空1分,第1空、第2空为2分,共11分)1.中缀表达式“(a+b)*d+e/(f+a*d)+c)”所对应的后缀表达式为(1)2.后缀表达式“ab&&ef>!||”所对应的中缀表达式为(2)自 觉 遵 守 考 场 纪 律如 考 试 作 弊 此 答卷 无 效3.高度为h的二叉树最多可以有多少结点(3)4.若对一棵完全二叉树从0开始编号,并按此编号把它顺序存储到一维数组a中,则a[i]元素的左孩子结点为(4) ,右孩子结点为(5) ,双亲结点为(6) 。
5.对用邻接矩阵表示的图进行任何一种遍历时,其时间复杂度为(7) 。
对用邻接表表示的图进行任何一种遍历时,其时间复杂度为(8) 。
6.折半插入排序的时间复杂度为(9) 。
四、简答简述题(每题8分,共24分)1.设有一组关键码输入序列{55,31,12,37,46,73,63,02,07},从空树开始构造平衡二叉搜索树,画出每加入一个新结点时的二叉树形态,需标出平衡因子。
包括发生不平衡时,旋转的各步的二叉树形态,并标注旋转类型。
2.已知一棵二叉树的前序遍历的结果为ABECDFGHIJ,中序遍历的结果是EBCDAFHIGJ,试画出这棵二叉树。
请用图表示逐步形成二叉树的过程(也可以用文字)。
共8页第2页3.请用Kruskal算法,逐步画出下面有权无向图的最小生成树。
必须每次添加一条边。
共8页第3页五、综合算法题(每空2.5分,共55分)1.完善改进的归并排序算法。
*this是一个待排序的表,而表L2是一个辅助的工作表,帮助完成排序的中间步骤,最终完成*this的排序。
所谓改进指在把元素序列复制到辅助表中时,把第2个表的元素顺序逆转,这样两个待归并的表从两端开始处理,向中间归并。
可以省去检查子表是否结束的判断。
template <typename T>void Orderedlist<T>::MergeSort(int left, int right){Orderedlist<T> L2;improvedMergeSort(L2, left, right); //对序列进行归并排序}template <typename T>void Orderedlist<T>::improvedMergeSort(Orderedlist<T> &L2, int left, int right){ int mid = (left + right)/2; //从中间划分为两个子序列improvedMergeSort(L2, left, mid); //对左侧子序列进行归并排序improvedMergeSort(L2, mid + 1, right); //对右侧子序列进行归并排序(1) ; //二路归并}template <typename T>void Orderedlist<T>::improvedMerge(Orderedlist<T> &L2, int left, int mid, int right){ int s1 = left, s2 = right, t = left, k ; //s1,s2是检测指针,t是存放指针for (k = left; k <= mid; k++){ //正向复制(2) ;}for (k = mid + 1; k <= right; k++){ //反向复制(3) ;}while (t <= right){ //归并过程if(L2.slist[s1] <= L2.slist[s2]) (4) ;else (5) ;}}2.完成二叉树前序遍历的非递归算法和层次序遍历算法操作。
//非递归前序遍历。
每访问一个结点后,在向左子树遍历下去之前,利用栈记录该结点的右子女结点的地址,以便在左子树退回时可以直接从栈顶取得右子树的根结点,继续右子树的前序遍历。
共8页第4页template <typename T>void BinaryTree<T>::PreOrder1(void (*visit) (BinTreeNode<T> *t) ) { LinkedStack<BinTreeNode<T>*> S;BinTreeNode<T> *p = root;S.Push (NULL);while (p != NULL) {visit(p); //访问结点if (p->rightChild != NULL)(6) ; //预留右指针在栈中if (p->leftChild != NULL)(7) ; //进左子树else (8) ; //左子树为空,由堆栈弹出}}//层次序遍历。
在访问二叉树某一层结点时,把下一层结点指针预先记忆在队列中,利用队列安排逐层访问的次序。
因此每当访问一个结点时,将它的子女依次加到队尾。
然后访问已在队头的结点。
template <typename T>void BinaryTree<T>::levelOrder (void (*visit) (BinTreeNode<T> *t)) { if (root == NULL) return;LinkedQueue<BinTreeNode<T> * > Q;BinTreeNode<T> *p = root;visit (p);(9) ;while ( (10) ) {Q.DeQueue (p);if (p->leftChild != NULL) {visit (p->leftChild);(11) ;}if (p->rightChild != NULL) {visit (p->rightChild);(12) ;}}}3.完成利用最大堆实现的优先级队列类定义。
注意heap[0]不用,从heap[1]开始共8页第5页template<typename T>class Maxheap{Element<T>* heap;int n;int MaxSize;public:Maxheap(int sz=Defaultsize); //创建空堆,最多可以容纳sz个元素void Insert(Element<T>& item);Element<T>* Delete(Element<T>& x);void show() ;};template<typename T>Maxheap<T>::Maxheap(int sz){MaxSize=sz;n=0;heap= new Element<T>[MaxSize+1]; //注意heap[0]不用,从heap[1]开始}template<typename T>void Maxheap<T>::Insert(Element<T>& x){int i;if(n==MaxSize){cerr<<"heap is full.\n";return;}n++;for(i=n;i>1;){ //i==1表示已达到根节点if( (13) ) break; //新元素不大于结点i的双亲,不处理(14) ;//此时heap[i]未占用,将双亲结点元素移入(15) ; //i继续向上}heap[i]=x; //位置定了数值再放进去}template<typename T>Element<T>* Maxheap<T>::Delete(Element<T>& x){ int i,j;if(!n){cerr<<"heap is empty.\n";return NULL;}x=heap[1];Element<T> k=heap[n];n--;共8页第6页for(i=1,j=2;j<=n;){ //j是i的子女if(j<n) if( (16) ) j++; //j指向较大子女if(heap[j]<=k) break; //候补的结点大,不再移动(17) ; //还需移动,将较大子女直接移入(18) ; //移动(19) ;}heap[i]=k;return &x;}4.完成的深度优先遍历图算法。
//深度优先遍历图,输出所有的连通分量template<typename T, typename E> void Graph<T,E>::DFS(){int i, n = NumberOfVertices(); //取图中顶点个数bool *visited = new bool[n]; //创建辅助数组for (i = 0; i < n; i++){ //辅助数组visited初始化visited[i] = false;}for(i=0;i<n;i++){ //从每个顶点开始,各做一次遍历。