东南大学数据结构2000真题

东南大学数据结构2000真题

东南大学2000年考研专业课试卷数据结构试题

一:简要回答下列问题(共40分)

1.假设一棵二叉树的层序序列是ABCDEFGHIJ和中序序列是DBGEHJACIF,请画出该树.(6分)

2.简单比较文件的多重表和倒排表组织方式各自的特点.(6分)

3.画出对算术表达式A-B*C/D+E^F求值时操作数栈和运算符栈的变化过程.(6分)

4.找出所有满足下列条件的二叉树6分)

a)它们在先序遍历和中序遍历时,得到的结点访问序列相同;

b)它们在后序遍历和中序遍历时,得到的结点访问序列相同;

c)它们在先序遍历和后序遍历时,得到的结点访问序列相同.

5.对一个由n个关键字不同的记录构成的序列,能否用比2n-3少的次数选出该序列中

关键字取最大值和关键字取最小值的记录?请说明如何实现?在最坏情况下至少进行

多少次比较?(8分)

6.已知某文件经过置换选择排序后,得到长度分别为47,9,31,18,4,12,23,7的8个初

始归并段.试为3路平衡归并设计读写外存次数最少的归并方案,并求出读写外存的

次数.(8分)

二:

已知L是无表头结点的单链表,其中P结点既不是首元结点,也不是尾元结点,(10分

)

a)在P结点后插入S结点的语句序列是______

b)在P结点前插入S结点的语句序列是______

c)在表首插入S结点的语句序列是______

d)在表尾插入S结点的语句序列是______

(1) P^.next:=S;

(2) P^.next:=P^.next^.next;

(3) P^.next:=S^.next;

(4) S^.next:=P^.next;

(5) S^.next:=L;

(6) S^.next:=NIL;

(7) Q:=P;

(8) WHILE P^.next<>Q DO P:=P^.next;

(9) WHILE P^.next<>NIL DO P:=P^.next;

(10) P:=Q;

(11) P:=L;

(12) L:=S;

(13) L:=P;

三:

设计一个符号表的表示方法,编写算法使得在该表中进行查询,插入和删除任何一个

标识符X的操作在O(1)的时间内.假设1<=x<=m,n为要插入的个数,所需空间为m+n. (10分)

四:

试利用Dijkstra算法求下图中从顶点a到其它各顶点的最短路径,写出执行算法过程

东南大学1996数据结构试题

东南大学1996数据结构试题 试题编号:451 试题名称:数据结构 一:回答下列问题(共46分) 1.线性表(a(1),a(2),……a(n))用顺序映射表示时,a(i)与a(i+1)(1<=i

东南大学十套数据结构试题及答案

数据结构试卷(一) 三、计算题(每题 6 分,共24分) 1.在如下数组A中链接存储了一个线性表,表头指针为A [0].next,试 写出该线性表。 A 0 1 2 3 4 5 6 7 dat a nex t 2. 3.已知一个图的顶点集V和边集E分别为:V={1,2,3,4,5,6,7}; E={(1,2)3,(1,3)5,(1,4)8,(2,5)10,(2,3)6,(3,4)15, (3,5)12,(3,6)9,(4,6)4,(4,7)20,(5,6)18,(6,7)25}; 用克鲁斯卡尔算法得到最小生成树,试写出在最小生成树中依次得到 的各条边。 4.画出向小根堆中加入数据4, 2, 5, 8, 3时,每加入一个数据后堆的 变化。 四、阅读算法(每题7分,共14分) 1.LinkList mynote(LinkList L) {//L是不带头结点的单链表的头指针 if(L&&L->next){ q=L;L=L->next;p=L; S1: while(p->next) p=p->next; S2: p->next=q;q->next=NULL; } return L; } 请回答下列问题: (1)说明语句S1的功能; (2)说明语句组S2的功能; (3)设链表表示的线性表为(a 1,a 2 , …,a n ),写出算法执行后的 返回值所表示的线性表。 2.void ABC(BTNode * BT) {

if BT { ABC (BT->left); ABC (BT->right); cout<data<<' '; } } 该算法的功能是: 五、算法填空(共8分) 二叉搜索树的查找——递归算法: bool Find(BTreeNode* BST,ElemType& item) { if (BST==NULL) return false; //查找失败 else { if (item==BST->data){ item=BST->data;//查找成功 return ___________;} else if(itemdata) return Find(______________,item); else return Find(_______________,item); }//if } 六、编写算法(共8分) 统计出单链表HL中结点的值等于给定值X的结点数。 int CountX(LNode* HL,ElemType x)

东南大学数据结构试卷

共 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) 自 觉 遵 守 考 场 纪 律 如 考 试 作 弊 此 答 卷 无 效

东南大学软件基础考试大纲

2016年硕士研究生入学统一考试软件基础考试大纲 考试科目:程序设计基础、数据结构 考试形式和试卷结构 一、试卷满分及考试时间 试卷满分为150分,考试时间为180分钟 二、答题方式 答题方式为闭卷、笔试 三、试卷内容结构 程序设计基础50% 数据结构50% 程序设计基础 一、C++语言基础 考试内容 基本数据类型、enum数据类型、运算符、控制语句 考试要求 1.理解计算机信息的存储于表示,掌握C++的基本数据类型的用法. 2.掌握运算符与表达式的基本用法. 3.理解逗号表达式与条件表达式的作用. 4.掌握enum枚举类型的定义、枚举变量声明及使用.

5.掌握和运用三种(if、if…else、switch)选择语句. 6.掌握和运用三种(while、for、do…while)循环语句. 7.掌握和运用其他(break、continue)控制语句. 二、C++程序的结构(一):函数 考试内容 函数定义、函数声明、函数调用、函数的参数传递、递归调用、函数重载、函数模板 考试要求 1.掌握函数定义的语法形式,熟练运用自定义函数来实现多函数程序设计. 2.理解函数声明的作用,掌握函数声明的用法. 3.理解函数调用的过程. 4.明确参数传递的意义,理解和掌握函数调用中参数传递的三种参数传递调用:传值调用、引用调用、传地址调用. 5.掌握和运用递归函数的概念、算法和实现方法. 6.理解函数重载的概念,掌握函数重载的实现方法. 7.理解函数模板的概念,掌握函数模板的实现方法. 三、C++程序的结构(二):类 考试内容 抽象数据类型、类的定义、对象创建、构造函数与析构函数、公共接口函数、工具函数 类的组合、类模板

数据结构II A卷 东北大学(答案)

东北大学继续教育学院 数据结构II 试卷(作业考核线上1) A 卷 院校学号:******姓名***** (共 6 页) [ A]1.抽象数据类型的三个组成部分分别为 A.数据对象、数据关系和基本操作 B.数据元素、逻辑结构和存储结构 C.数据项、数据元素和数据类型 D.数据元素、数据结构和数据类型 [B ]2.要求相同逻辑结构的数据元素具有相同的特性,其含义为 A. 数据元素具有同一的特点 B. 不仅数据元素包含的数据项的个数相同,而且其对应数据项的类型要一致 C. 每个数据元素都一样 D. 仅需要数据元素包含的数据项的个数相同 [D ]3.下列各式中,按增长率由小至大的顺序正确排列的是 A.,n!,2n ,n3/2 B.n3/2,2n,n logn,2100 C.2n,log n,n logn,n3/2 D.2100,logn, 2n, n n [B ]4. 在下列哪种情况下,线性表应当采用链表表示为宜 A.经常需要随机地存取元素 B.经常需要进行插入和删除操作 C.表中元素需要占据一片连续的存储空间 D.表中元素的个数不变 [ C]5.设指针p指向双链表的某一结点,则双链表结构的对称性是 A. p->prior->next=p->next->next; B. p->prior->prior=p->next->prior; C. p->prior->next=p-> next->prior; D. p->next->next= p->prior->prior;

[ D]6. 已知指针p和q分别指向某带头结点的单链表中第一个结点和最后一个结点。假设指针s指向另一个单链表中某个结点,则在s所指结点之后插入上述链表应执行的语句为 A. s->next=q;p->next=s->next; B. s->next=p;q->next=s->next; C. p->next=s->next;s->next=q; D. q->next=s->next;s->next=p; [A ]7. 栈和队列的共同特点是 A.只允许在端点处插入和删除元素 B.都是先进后出 C.都是先进先出 D.没有共同点 [ D]8. 对于链队列,在进行插入运算时. A. 仅修改头指针 B. 头、尾指针都要修改 C. 仅修改尾指针 D.头、尾指针可能都要修改 [B ]9.设有一个顺序栈的入栈序列是1、2、3,则3个元素都出栈的不同排列个数为 A.4 B.5 C. 6 D. 7 [D ]10.设一个栈的输入序列为A,B,C,D,则借助一个栈所得到的输出序列不可能是 A.A,B,C,D B.D,C,B,A C. A,C,D,B D. D,A,B,C [C ]11.表达式a*(b+c)-d的后缀表达式是 A.abcd*+- B.abc*+d- C.abc+*d- D.-+*abcd [B ]12.某二叉树的先序序列和后序序列正好相反,则该二叉树的特点一定是 A. 空或只有一个结点 B.高度等于其结点数 C. 任一结点无左孩子 D.任一结点无右孩子 [B ]13.下面的说法中正确的是 (1)任何一棵二叉树的叶子结点在种遍历中的相对次序不变。 (2)按二叉树定义,具有三个结点的二叉树共有6种。 A.(1),(2) B.(1) C.(2) D.(1),(2)都错 [B ]14.树有先序遍历和后序遍历,树可以转化为对应的二叉树。下面的 说法正确的是 A.树的后序遍历与其对应的二叉树的先序遍历相同 B.树的后序遍历与其对应的二叉树的中序遍历相同 C.树的先序序遍历与其对应的二叉树的中序遍历相同 D.以上都不对 [ D]15.下列说法正确的是 (1)二又树按某种方式线索化后,任一结点均有前趋和后继的线索 (2)二叉树的先序遍历序列中,任意一个结点均处于其子孙结点前 (3)二叉排序树中任一结点的值大于其左孩子的值,小于右孩子的值 A.(1)(2)(3) B.(1)(2) C.(1)(3) D.都不对 [ D]16. 二叉树的第k层的结点数最多为 A.2k-1 B.2K+1

东南大学十套数据结构试题及答案(同名8889)

数据结构试卷(一) 三、计算题(每题6 分,共24分) 1.在如下数组A中链接存储了一个线性表,表头指针为A [0].next,试写出该线性表。 data 60 50 78 90 34 40 next 3 5 7 2 0 4 1 2. 3.已知一个图的顶点集V和边集E分别为:V={1,2,3,4,5,6,7}; E={(1,2)3,(1,3)5,(1,4)8,(2,5)10,(2,3)6,(3,4)15, (3,5)12,(3,6)9,(4,6)4,(4,7)20,(5,6)18,(6,7)25}; 用克鲁斯卡尔算法得到最小生成树,试写出在最小生成树中依次得到的各条边。 4.画出向小根堆中加入数据4, 2, 5, 8, 3时,每加入一个数据后堆的变化。 四、阅读算法(每题7分,共14分) 1.LinkList mynote(LinkList L) {//L是不带头结点的单链表的头指针 if(L&&L->next){ q=L;L=L->next;p=L; S1:while(p->next) p=p->next; S2:p->next=q;q->next=NULL; } return L; } 请回答下列问题: (1)说明语句S1的功能; (2)说明语句组S2的功能; (3)设链表表示的线性表为(a1,a2, …,a n),写出算法执行后的返回值所表示的线性表。 2.void ABC(BTNode * BT) { if BT { ABC (BT->left); ABC (BT->right); cout<data<<' '; } } 该算法的功能是: 五、算法填空(共8分) 二叉搜索树的查找——递归算法: bool Find(BTreeNode* BST,ElemType& item)

东南大学十套数据结构试题与答案

数据结构试卷(一) 三、计算题(每题 6 分,共24 分) 1. 在如下数组 A 中存储了一个线性表,表头指针为 A [0].next ,试写出该线性表。 3. 已知一个图的顶点集V 和边集E分别为:V={1,2,3,4,5,6,7}; E={(1,2)3,(1,3)5,(1,4)8,(2,5)10,(2,3)6,(3,4)15, (3,5)12,(3,6)9,(4,6)4,(4,7)20,(5,6)18,(6,7)25}; 用克鲁斯卡尔算法得到最小生成树,试写出在最小生成树中依次得到的各条边。 4. 画出向小根堆中加入数据4, 2, 5, 8, 3 时,每加入一个数据后堆的变化。 四、阅读算法(每题7 分,共14 分) 1. LinkList mynote(LinkList L) {//L 是不带头结点的单链表的头指针if(L&&L->next){ q=L ;L=L ->next ;p=L; S1 :while(p ->next) p=p ->next ; S2 :p ->next=q ;q->next=NULL; } return L ; } 请回答 下列问 题: (1)说明语句S1 的功能; (2)说明语句组S2 的功能; (3)设链表表示的线性表为( a1,a 2, ?,a n), 写出算法执行后的返回值所表示的线性表。 2. void ABC(BTNode * BT) { if BT { ABC (BT->left); ABC (BT->right); cout<data<<' '; } } 该算法的功能是: 五、算法填空(共8 分) 二叉搜索树的查找——递归算法: bool Find(BTreeNode* BST,ElemType& item) { if (BST==NULL) return false; // 查找失败 else { if (item==BST->data){ item=BST->data;// 查找成功return ;} else if(itemdata) return Find( _____________ ,item); else return Find( ______________ ,item); }//if } 60 50 78 90 34 40 3 5 7 2 0 4 1 3 4 5 6 7 data next 2. 请画出下图的邻接矩阵和邻接表。

东南大学十套数据结构试题及答案

东南大学十套数据结构 试题及答案 Document number:BGCG-0857-BTDO-0089-2022

数据结构试卷(一) 三、计算题(每题 6 分,共24分) 1.在如下数组A中链接存储了一个线性表,表头指针为A [0].next,试 写出该线性表。 A 0 1 2 3 4 5 6 7 dat a nex t 2. 3.已知一个图的顶点集V和边集E分别为:V={1,2,3,4,5,6,7}; E={(1,2)3,(1,3)5,(1,4)8,(2,5)10,(2,3)6,(3,4)15, (3,5)12,(3,6)9,(4,6)4,(4,7)20,(5,6)18,(6,7)25}; 用克鲁斯卡尔算法得到最小生成树,试写出在最小生成树中依次得到的各条边。 4.画出向小根堆中加入数据4, 2, 5, 8, 3时,每加入一个数据后堆的 变化。 四、阅读算法(每题7分,共14分) 1.LinkList mynote(LinkList L) {//L是不带头结点的单链表的头指针 if(L&&L->next){ q=L;L=L->next;p=L; S1: while(p->next) p=p->next; S2: p->next=q;q->next=NULL; } return L; } 请回答下列问题: (1)说明语句S1的功能; (2)说明语句组S2的功能; (3)设链表表示的线性表为(a 1,a 2 , …,a n ),写出算法执行后的 返回值所表示的线性表。 2.void ABC(BTNode * BT) { if BT { ABC (BT->left); ABC (BT->right); cout<data<<' ';

东南大学数据结构2000真题

东南大学2000年考研专业课试卷数据结构试题 一:简要回答下列问题(共40分) 1.假设一棵二叉树的层序序列是ABCDEFGHIJ和中序序列是DBGEHJACIF,请画出该树.(6分) 2.简单比较文件的多重表和倒排表组织方式各自的特点.(6分) 3.画出对算术表达式A-B*C/D+E^F求值时操作数栈和运算符栈的变化过程.(6分) 4.找出所有满足下列条件的二叉树6分) a)它们在先序遍历和中序遍历时,得到的结点访问序列相同; b)它们在后序遍历和中序遍历时,得到的结点访问序列相同; c)它们在先序遍历和后序遍历时,得到的结点访问序列相同. 5.对一个由n个关键字不同的记录构成的序列,能否用比2n-3少的次数选出该序列中 关键字取最大值和关键字取最小值的记录?请说明如何实现?在最坏情况下至少进行 多少次比较?(8分) 6.已知某文件经过置换选择排序后,得到长度分别为47,9,31,18,4,12,23,7的8个初 始归并段.试为3路平衡归并设计读写外存次数最少的归并方案,并求出读写外存的 次数.(8分) 二: 已知L是无表头结点的单链表,其中P结点既不是首元结点,也不是尾元结点,(10分 ) a)在P结点后插入S结点的语句序列是______ b)在P结点前插入S结点的语句序列是______ c)在表首插入S结点的语句序列是______ d)在表尾插入S结点的语句序列是______ (1) P^.next:=S; (2) P^.next:=P^.next^.next; (3) P^.next:=S^.next; (4) S^.next:=P^.next; (5) S^.next:=L; (6) S^.next:=NIL; (7) Q:=P; (8) WHILE P^.next<>Q DO P:=P^.next; (9) WHILE P^.next<>NIL DO P:=P^.next; (10) P:=Q; (11) P:=L; (12) L:=S; (13) L:=P; 三: 设计一个符号表的表示方法,编写算法使得在该表中进行查询,插入和删除任何一个 标识符X的操作在O(1)的时间内.假设1<=x<=m,n为要插入的个数,所需空间为m+n. (10分) 四: 试利用Dijkstra算法求下图中从顶点a到其它各顶点的最短路径,写出执行算法过程

数据结构-东南大学

★数据结构是一门研究非数值计算的程序设计问题中的(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 。循环部分的每次迭代花费的时间为O(1)。假定循环一共执行k 次迭代,在第i 次迭代中需搜索的元素为 n/2i-1。所以,每次迭代搜索的元素个数的序列为:

东南大学十套数据结构试题及答案

数据结构试卷(一) 三、计算题(每题 6分,共24 分) 3. 已知一个图的顶点集 V 和边集E 分别为:V={1,2,3,4,5,6,7}; E={(1,2)3,(1,3)5,(1,4)8,(2,5)10,(2,3)6,(3,4)15, (3,5)12,(3,6)9,(4,6)4,(4,7)20,(5,6)18,(6,7)25}; 用克鲁斯卡尔算法得到最小生成树,试写出在最小生成树中依次得到的各条边。 4. 画出向小根堆中加入数据 4, 2, 5, 8, 3时,每加入一个数据后堆的变化。 四、 阅读算法(每题 7分,共14分) 1. LinkList mynote(LinkList L) {//L 是不带头结点的单链表的头指针 if(L&&L-> next){ q=L ; L=L — >next ; p=L ; S1: while(p — >n ext) p=p — >next ; S2: p — >next=q ; q — >next=NULL ; } return L ; } 请回答下列问题: (1 )说明语句S1的功能; (2) 说明语句组S2的功能; (3) 设链表表示的线性表为(a 1,a 2,…,a n ),写出算法执行后的返回值所表示的线性 表。 2. void ABC(BTNode * BT) { if BT { ABC (BT->left); ABC (BT->right); cout<data<<''; } } 该算法的功能是: 五、 算法填空(共 8分) 二叉搜索树的查找 一谗归算法: bool Fi nd(BTreeNode* BST,ElemType & item) { if (BST==NULL) return false; // 查找失败 else { if (item==BST->data){ item=BST->data;// 查找成功 return _______________________ ;} else if(itemdata) return Find( ,item); else return Find( _____________ ,item); 1. 在如下数组A 中链接存储了一个线性表, A [0].next ,试写出该线性表。 60 50 78 90 34 40 3 5 7 2 4 1 2. 3 4 5 6 7 表头指针为 data n

东南大学十套数据结构试题与答案.docx

数据结构试卷(一) 三、算(每6分,共24 分) 1. 在如下数 A 中存了一个性表,表指 A [0].next,写出性表。 A01234567 data605078903440 next3572041 2.画出下的接矩和接表。 3.已知一个的点集 V 和集 E 分: V={1,2,3,4,5,6,7}; E={(1,2)3,(1,3)5,(1,4)8,(2,5)10,(2,3)6,(3,4)15, (3,5)12,(3,6)9,(4,6)4,(4,7)20,(5,6)18,(6,7)25}; 用克斯卡算法得到最小生成,写出在最小生成中依次得到的各条。 4. 画出向小根堆中加入数据4, 2, 5, 8, 3,每加入一个数据后堆的化。 四、算法(每7 分,共 14 分) 1. LinkList mynote(LinkList L) {//L是不点的表的指 if(L&&L->next){ q=L; L=L- >next ; p=L; S1:while(p->next) p=p->next; S2:p->next=q;q->next=NULL; } return L; } 回答下列: (1)明句 S1 的功能; (2)明句 S2 的功能; (3)表表示的性表( a1,a 2, ? ,a n), 写出算法行后的返回所表示的 性表。 2. void ABC(BTNode * BT) { if BT { ABC (BT->left); ABC (BT->right); cout<data<<' '; } } 算法的功能是: 五、算法填空(共8 分) 二叉搜索的找——算法:

东南大学2001年研究生入学考试数据结构试题

东南大学2001年研究生入学考试数据结构试题 一、 1、设胜者树(selection tree)由k个记录缓冲区和k-1个非叶结点构成。概念上非叶结点表示其两个子女中关键字较小者,而实际上非叶结点存放的是什么? 2、给出KMP算法中失败函数f的定义,并说明利用f进行串模式匹配的规则,该算法的技术特点是什么? 3、是一道关于Huffman树中叶子结点和非叶结点数量关系的计算题,具体题目记不得了。 4、求有向图中任意一对顶点之间最短路径的弗洛伊德算法(allcosts-Floyd)中,要求有向图满足什么前提条件? 二、在二叉树的结点结构中增加一个域:leftsize,t^.leftsize表示t结点的左子树中结点的总个数,试编写算法alloc(k),在二叉树中查找中序序号为k的结点,要求时间复杂度为O(log2(n))。 三、编写算法输出从n个自然数中取k个(k<=n)的所有组合。例如,当n=5,k=3时,你的算法应该输出:543,542,541,532,531,521,432,431,421,321. 四、设有向图G用邻接表的方式存储,u,v是G中的任意两个结点,写一算法,求出G中从u到v的所有简单路径。 五、下面是一改进了的快速分类算法,试补充其中的空白语句,并分析该算法所需的最大递归空间是多少? procedure qsort1(var list:afile;m,n:integer); (设list[m].key

东南大学十套数据结构试题及标准答案

东南大学十套数据结构试题及答案

————————————————————————————————作者:————————————————————————————————日期:

数据结构试卷(一) 三、计算题(每题6 分,共24分) 1.在如下数组A中链接存储了一个线性表,表头指针为A [0].next,试写出该线性表。 A 0 1 2 3 4 5 6 7 data 60 50 78 90 34 40 next 3 5 7 2 0 4 1 2.请画出下图的邻接矩阵和邻接表。 3.已知一个图的顶点集V和边集E分别为:V={1,2,3,4,5,6,7}; E={(1,2)3,(1,3)5,(1,4)8,(2,5)10,(2,3)6,(3,4)15, (3,5)12,(3,6)9,(4,6)4,(4,7)20,(5,6)18,(6,7)25}; 用克鲁斯卡尔算法得到最小生成树,试写出在最小生成树中依次得到的各条边。 4.画出向小根堆中加入数据4, 2, 5, 8, 3时,每加入一个数据后堆的变化。 四、阅读算法(每题7分,共14分) 1.LinkList mynote(LinkList L) {//L是不带头结点的单链表的头指针 if(L&&L->next){ q=L;L=L->next;p=L; S1:while(p->next) p=p->next; S2:p->next=q;q->next=NULL; } return L; } 请回答下列问题: (1)说明语句S1的功能; (2)说明语句组S2的功能; (3)设链表表示的线性表为(a1,a2, …,a n),写出算法执行后的返回值所表示的线性表。 2.void ABC(BTNode * BT) { if BT { ABC (BT->left); ABC (BT->right); cout<data<<' '; } } 该算法的功能是: 五、算法填空(共8分) 二叉搜索树的查找——递归算法: bool Find(BTreeNode* BST,ElemType& item)

东南大学专业课

东南大学]2000数据结构试题 --------------------------------------------------------------------- ----------- 科目名称:数据结构 一:简要回答下列问题(共40分) 1.假设一棵二叉树的层序序列是ABCDEFGHIJ和中序序列是DBGEHJACIF,请画出 该树.(6分) 2.简单比较文件的多重表和倒排表组织方式各自的特点.(6分) 3.画出对算术表达式A-B*C/D+E^F求值时操作数栈和运算符栈的变化过程.(6 分) 4.找出所有满足下列条件的二叉树6分) a)它们在先序遍历和中序遍历时,得到的结点访问序列相同; b)它们在后序遍历和中序遍历时,得到的结点访问序列相同; c)它们在先序遍历和后序遍历时,得到的结点访问序列相同. 5.对一个由n个关键字不同的记录构成的序列,能否用比2n-3少的次数选出该序列中关键字取最大值和关键字取最小值的记录?请说明如何实现?在最坏情况下 至少进行多少次比较?(8分) 6.已知某文件经过置换选择排序后,得到长度分别为47,9,31,18,4,12,23,7的8个初始归并段.试为3路平衡归并设计读写外存次数最少的归并方案,并求出读 写外存的次数.(8分) 二:已知L是无表头结点的单链表,其中P结点既不是首元结点,也不是尾元结 点,(10分) a)在P结点后插入S结点的语句序列是______ b)在P结点前插入S结点的语句序列是______ c)在表首插入S结点的语句序列是______ d)在表尾插入S结点的语句序列是______

(1) P^.next:=S; (2) P^.next:=P^.next^.next; (3) P^.next:=S^.next; (4) S^.next:=P^.next; (5) S^.next:=L; (6) S^.next:=NIL; (7) Q:=P; (8) WHILE P^.next<>Q DO P:=P^.next; (9) WHILE P^.next<>NIL DO P:=P^.next; (10) P:=Q; (11) P:=L; (12) L:=S; (13) L:=P; 三:设计一个符号表的表示方法,编写算法使得在该表中进行查询,插入和删除任何一个标识符X的操作在O(1)的时间内.假设1<=x<=m,n为要插入的个数,所需 空间为m+n.(10分) 四:试利用Dijkstra算法求下图中从顶点a到其它各顶点的最短路径,写出执行 算法过程中各步的状态.(10分) ____________ / 4 ↓ 6 b------→e___9 15↑ ↑\ / / 2 /8 ↓/ a------→c g (和严蔚敏习题集上题目相同) \ \4 ↑↑ 12↓ 5 ↓ 10/ / d←------f__/ / \___________/ 3 五:以顺序存储结构表示串,设计算法,求串S中出现的第一个最长重复子串及其 位置并分析算法的时间复杂度.(15分)

东南大学研究生入学考试数据结构试题

东南大学一九九四年攻读硕士学位研究生入学考试试题 试题编号:451 试题名称:数据结构 一: 回答下列问题(共32分) 1.最近最少使用(Least-Recently-Used)页替换是虚拟存储系统中常用的策略,试说明如何利用一页链接表时刻跟踪最近最少使用页?(8分) 2.已知无向图G,V(G)={1,2,3,4},E(G)={(1,2),(1,3),(2,3),(2,4),(3,4)},试画出G的邻接多表(Adjacency Multilists),并说明,若已知点i,如何根据邻接多表找到与i相邻的点j?(8分) 3.欲求前k个最大元素,用什么分类(sorting)方法好?为什么?什么是稳定分类?分别指出下列算法是否稳定分类算法,或易于改成稳定分类算法? (a) 插入分类 (b) 快速分类 (c) 合并分类 (d) 堆(heap)分类 (e) 基数分类(radix sort) (8分) 4.构造最佳二叉检索树的前提条件是什么?在动态情况下,一般A VL树的查询性能不如完全二叉检索树的,为什么人们却采用A VL树呢?(8分) 二: 下列算法对一n位二进制数加1,假设无溢出,该算法的最坏时间复杂度是什么?并分析它的平均时间复杂性.(15分) type Num=array[1..n] of [0..1]; procedure Inc(var A:Num); var j: integer; begin i:=n; while A[i]=1 do A[i]:=0;i:=i-1; end; A[i]:=1; end Inc; 三: 给定n*m矩阵A[a..b,c..d],并设A[i,j]<=A[i,j+1](a<=i<=b,c<=j<=d-1)和A[i,j]<=A[i+1,j](a<=i<=b-1,c<=j<=d),设计一算法以比O(n*m)小的时间复杂度判定值x是否在A中.(17分) 四: 设图G有n个点,利用从某个源点到其余各点最短路径算法思想,设计一产生G 的最小生成树的算法.(18分) 五: 字符序列的子序列由删除该序列任意位置的任意个元素而得.序列x和y的最长公共子序列记为Lcs(x,y),是x和y的公共子序列,且长度最大.例如,adcbcb是x=abdcbcbb和y=adacbcb的最长公共子序列.设x长度为n,y长度为m,设计一算法计算x和y的最长公共子序列的长度,尽可能改进你的算法,使它的时间复杂性为O(n*m).(18分) _______________________________________________________________________________

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

共 10 页 第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 .724 2.若让元素1,2,3依次但并非连续进栈,则哪种出栈次序是不可能的( ) A .3,2,1 B .2,1,3 C .3,1,2 D .1,2,3 3.设完全二叉树有82个结点,从根结点开始顺序编号,根节点为1号,其他结点自上向下,同一层次自左向右连续编号。则第41号结点的双亲结点的编号为( ) A .20 B .21 C .81 D .82 4.采用对半搜索算法搜索长度为n 的有序表,元素的平均搜索长度为( ) A .O(n 2) B .O(n) C .O(n log 2n) D .O(log 2n) 5.采用邻接表存储的图的深度优先遍历算法类似于二叉树的( ) A .中序遍历 B .前序遍历 C .后序遍历 D .按层次遍历 二、判断题(每题1分,共5分) 1.邻接表只能用于有向图的存储,邻接矩阵对于有向图和无向图的存储都适用。( ) 2.直接选择排序是一种不稳定的排序方法。 ( ) 3.在用散列表存储关键码集合时,可以用双散列法寻找下一个空桶。在设计再散列函数时,要求计算出的值与表的大小m 互质。 ( ) 4.连通分量是无向图中的极小连通子图。 ( ) 5.若有一个叶子节点是二叉树中某子树的前序遍历结果序列的最后一个结点, 它一定是该子树的中序遍历结果序列的最后一个结点。 ( ) 自 觉 遵 守 考 场 纪 律 如 考 试 作 弊 此 答 卷 无 效

东南大学研究生入学考试数据结构试题93-05

东南大学93考研题 (1)答卷上需写清题号,不必抄题 (2)描述可用你熟悉的一种类高级语言,如类Pascal,所用主要数据结构及变量的意义须加以注释。必要时算法中应加注释。 一、回答下列问题 : (共 35分) l与链式结构相比,线性表的顺序存贮的一个主要优点和一个主要缺点分别是什么 ? (4分) 2在表达式中,有的运算符要求从右到左计算,如A**B**C的计算次序应为(A**(B**C)),这在由中缀生成后缀的算法中是怎样实现的?(以**为例说明 ) (6分) 3.给出KMP算法中失败函数f的定义,并说明利用f进行串模式匹配的规则,该算法的技术特点是什么?(9分) 4二叉树的中序与后序序列能唯一地定义一棵二叉树吗?这里所指序列中的符号代素树结点中的标识符吗?二叉村的前序与后序序列能唯一地定义一棵二叉树吗?为什么?(8分) 5在什么情况下m阶B树(m>>2)比AVL树有效?分析其原因·(8分) 二。将n个队列顺序映射到数组v[l···m]中,每一队列在v中表示为一,循环队列。试画出其示意图并写出对应这种表示的addq和deleteq 过程。 (20分) 三、给出中序线索树的结点结构并画出一个具有头结点的中序线索树,使其树结点至少应有6个,写一算法在不使用栈和递归的情况下前序遍历一中序线索树,并分析其时间复杂度,(20分) 四、证明:具有n个点和多于n-1条边的无向连通图G一定不是树(10分) 五、若S是n个元素的集合,则S的幂集P(S)定义为S所有子集的集合。例如,S=(a,b,c),P(S)={() ,(a),(b),(c),(a,b),(a,c),(b,c),(a,b,c)}给定S,写一递归算法求P(S)。(15分) 东南大学一九九四年攻读硕士学位研究生入学考试试题 一: 回答下列问题(共32分) 1.最近最少使用(Least-Recently-Used)页替换是虚拟存储系统中常用的策略,试说明如何利用一页链接表时刻跟踪最近最少使用页?(8 2.已知无向图G,V(G)={1,2,3,4},E(G)={(1,2),(1,3),(2,3),(2,4),(3,4)},试画出G的邻接多表(Adjacency Multilists),并说明,若已知点i,如何根据邻接多表找到与i相邻的点j?(8分) 3.欲求前k个最大元素,用什么分类(sorting)方法好?为什么?什么是稳定分类?分别指出下列算法是否稳定分类算法,或易于改成稳定分类算法?(a) 插入分类 (b) 快速分类 (c) 合并分类 (d) 堆(heap)分类 (e) 基数分类(radix sort) (8分) 4.构造最佳二叉检索树的前提条件是什么?在动态情况下,一般AVL树的查询性能不如完全二叉检索树的,为什么人们却采用AVL树呢?(8 二:下列算法对一n位二进制数加1,假设无溢出,该算法的最坏时间复杂度是什么?并分析它的平均时间复杂性.(15分) type Num=array[1..n] of [0..1]; procedure Inc(var A:Num); var j: integer; begin i:=n; while A[i]=1 do A[i]:=0;i:=i-1; end; A[i]:=1; end Inc; 三:给定n*m矩阵A[a..b,c..d],并设A[i,j]<=A[i,j+1](a<=i<=b,c<=j<=d-1)和A[i,j]<=A[i+1,j](a<=i<=b-1,c<=j<=d),设计一算法以比O(n*m)小的时间复杂度判定值x是否在A中.(17分) 四:设图G有n个点,利用从某个源点到其余各点最短路径算法思想,设计一产生G的最小生成树的算法.(18分) 五:字符序列的子序列由删除该序列任意位置的任意个元素而得.序列x和y的最长公共子序列记为Lcs(x,y),是x和y的公共子序列,且长度最大.例如,adcbcb是x=abdcbcbb和y=adacbcb的最长公共子序列.设x长度为n,y长度为m,设计一算法计算x和y的最长公共子序列的长度,尽可能改进你的算法,使它的时间复杂性为O(n*m).(18分) 东南大学一九九五年攻读硕士学位研究生入学考试试题 1.在磁带文件上进行二分查找行吗?为什么?(6分) 2.分析确定下列程序中语句k:=k+1执行次数与n所成的数量级关系(即表示为O(f(n))的形式).(6分) k:=1; i:=k; while i

相关文档
最新文档