东北大学历年初试考研真题分享.docx
- 文档编号:10153974
- 上传时间:2023-02-08
- 格式:DOCX
- 页数:46
- 大小:6.98MB
东北大学历年初试考研真题分享.docx
《东北大学历年初试考研真题分享.docx》由会员分享,可在线阅读,更多相关《东北大学历年初试考研真题分享.docx(46页珍藏版)》请在冰豆网上搜索。
东北大学历年初试考研真题分享
东北大学96考研题
一、(25分)每小题5分
1.根据下图完成:
1)画出该图的十字链表存储结构图。
2)写出其拓扑排序的输出序列。
3)写出图的强连通分量(支)。
4)写出到的所有路径及简单路径。
2.给定8个权值集合(2,5,3,10,4,7,9,18)画出含有8个叶子结点的最佳三叉归并树,并计算出
3.知含有8个结点的一棵二叉树,按先序、中序、后序进行遍历后,有些结点序号不清楚如下图示。
要求构造出一棵符合条件的二叉树。
先根序遍历---23---5---78
中根序遍历3---41---786
后根序遍历---42---651
4.根据给定的关键字集合(20,15,40,35,45,25,50,30,10)顺序输入
1)构造一棵完全二叉树;
2)画出整理好的一棵堆树;
3)画出一棵输出一个排序记录后的二叉树;
4)画出重新调整好的堆树。
5.下图给出的是一棵三阶B树,处理时每次只能读一个结点到内存。
要求:
1计算出由图中结构用计算机查找到关键字(35)的记录并将其删掉,需进行多少次读/写才能完成?
2画出删除关键字为(35)和关键字为(50)的记录后的三阶B树。
二、(10分)知L1、L2分别为两循环单链表的头结点指针,m,n分别为L1、L2表中数据结点个数。
要求设计一算法,用最快速度将两表合并成一个带头结点的循环单链表。
三、(12分)线性表(a1,a2,a3…an)中元素递增有序且按顺序存于计算机内。
要求设计一算法完成:
(1)用最少的时间在表中查找数值为的元素。
(2)若找到将其与后继元素位置交换。
(3)若找不到将其插入表中并使表中元素仍递增有序。
四、(12分)设给定关键字输入序列为(100,90,120,60,78,35,42,31,15)用散列法散列0——10的地址区间。
要求设计一合理的散列函数;冲突时用链表法解决,写出散列算法,并构造出散列表在等概率查找情况下查找成功的平均查找长度是多少?
五、(10分)设为t一棵二叉树的根结点地址指针,试设计一个非递归的算法完成把二叉树中每个结点的左右孩子位置交换。
六、(14分)设L为单链表的头结点地址,其数据结点的数据都是正整数且无相同的,试设计利用直接插入的原则把该链表整理成数据递增的有序单链表的算法。
七、(15分)设t是一棵按后序遍历方式构成的线索二叉树的根结点指针,试设计一个非递归的算法,把一个地址为x的新结点插到t树中,已知地址为y的结点有侧作为结点y的右孩子,并把插入后的二叉树仍为后序线索二叉树。
东北大学97考研题
一、(25分)按要求完成下题
1知U=‘xyxyxyxxyxy’;t=‘xxy‘;
ASSIGN(S,U);
ASSIGN(V,SUBSTR(S,INDEX(s,t),LEN(T)+1));
ASSIGN(m,‘ww’)
求REPLACE(S,V,m)=
2知广义表A=(((a)),(b),c,(a),(((d,e))))
(1)写出其一种存贮结构图;
(2)写出表的长度与深度;
(3)用求头部,尾部的方式求出e。
3画出同时满足下列两条件的两棵相同的二叉树。
(1)按先根序遍历二叉树顺序为ABCDE。
(2)高度为5其对应的树(森林)的高度最大为4。
4下图为一棵二叉排序树完成:
(1)写出平衡因子绝对值为2的结点;
(2)为何种类型的不平衡树;
(3)画出调整好的平衡二叉树,写出相应的指针变化式。
5一个有向图的邻接表存贮如下
(1)画出其邻接矩阵存贮;
(2)写出图的所有强连通分量;
(3)写出顶点a到顶点I的全部简单路径。
二、断正误
(1)二叉排序树查找总是比顺序查找速度快。
(2)堆排序与快速排序相比堆比快速省时间。
K-2
(3)深度为k且具有n个结点的二叉树其编号最小的结点序号为┕2┙+1。
(4)在m阶B一树中每个结点上至少┌m/2┐有个关键字最多m有个关键字。
(5)影响外排序的时间因素主要是内存与外设交换信息的总次数。
三、线性表(a1a2a3。
。
。
。
。
。
an)按顺序存贮,且每个元素都是整数不相同,设计把所有奇数指到所有偶数前边的算法。
(要求时间最少,辅助空间最少) (15分)
四、1与L2分别为两单链表头结点,地址指针,且两表中数据结点的数据域均为一个字母。
设计把L1中与L2中数据相同的连续结点顺序完全倒置的算法。
例:
(15分)
五、知输入关键字序列为(100,90,120,60,78,35,42,31,15)址区向为0~11。
设计一个哈希表函数把上述关键字散到0~11中画出散列表(冲突用线性探测法);写出查找算法,计算在等概率情况下查找长度。
(15分)
六、一棵高度K具有n个结点的二叉树,按顺序方式存贮:
1)编写用先根遍历树中每个结点的递归算法;
2)编写将树中最大序号叶子结点的祖先结点全部打印输出的算法。
(20分)。
东北大学98考研题
一.完成下列各小题(每小题10分,共计30分)。
1)知三个字符分别为s=’ab…abcaabcbca…a’
s’=’caab’,s’’=’bcb’
利用所学字符串基本运算的函数得到结果串为
s’’’=’caabcbca…aca…a’
要求写出得到上结果串S“‘所用的函数及执行算法。
2)知记录关键字集合为(53,17,19,61,98,75,79。
63,49,46)要求散列到地址区间(100,101,102,103,104,105,106,107,108,109)内,若产生冲突用开型寻址法的线性探测法解决。
要求写出选用的散列函数;形成的散列表;计算出查找成功时平均查找长度与查找不成功的平均查找长度。
(设等概率情况)
2)知一棵3阶B-树如下图所示:
1)画出查入(18)的3阶B-树计算读结点/写结点次数。
2)画处在插入(18)后的3阶B-树中删除(78)后的3阶B-树并计算读/写次数。
二.知线性表(a1a2a3…an)按顺序存于内存,每个元素都是整数,试设计用最少时间把所有值为负数的元素移到全部正数元素前边的算法:
(15分)
例:
(x,-x,-x,x,x,-x…-x)变为(-x,-x,-x…xxx)
三.已知L为链表的头结地址,表中共有m(m>3)个结点,从表中第i个结点(1
(15分)
四.设有字母、数字共m个混合传输从甲站到乙站存储,字母、数字的个数不知,且不相等,希望从乙站输出时将字母与数字分开且字母保持原输入顺序,而数字与输入倒序,
要求在任何时刻只要已存元素个数之和小于M便能存储,试设计能满足上述要求的存储结构,并设计完成上述功能的算法,即乙接收甲传输及从乙输出的算法。
(20分)
五.一棵高度为K且有n个结点的二叉排序树,同时又是一棵完全二叉树存于向量t中,试设计删除树中序号为i且具有左右孩子的一个结点,而不使存储量增加保证仍为二叉排序树(不一定是完全二叉树)的算法。
(20分)
东北大学99考研题
一、(27分)回答下列各题:
1.已知一棵满二叉树的结点个数为2040之间的素数,此二叉树的叶子结点有多少个?
(3分)
2.设有五对角矩阵A=(aij)20*20,按特殊矩阵压缩存储的方式将其五条对角线上的元素存于数组[-10:
m]中,计算元素A[15,16]的存储位置。
(4分)
3.以至一组关键字为(26,36,41,38,44,15,68,12,06,51,25),用链地址法解决冲突。
假设装填因子a=0.75散列函数的形式为H(K)=KMODP,回答下列问题:
(1)、构造出散列函数;(3分)
(2)、计算出等概率情况下查找成功的平均查找长度;(3分)
(3)、计算出等概率情况下查找失败的平均查找长度;(3分)
4、判别一下序列是否为堆,若不是,则把他调整为堆。
(1)(100,86,48,73,35,39,42,57,66,21)(4分)
(2)(12,70,33,65,24,56,48,92,86,33)(4分)
5、设有1000个无序的元素,希望用最大的速度挑选出其中前十个最大的元素,在以下的方法中采用哪一种最好?
为什么?
(3分)
(快速排序,归并排序,堆排序,基数排序,shell排序)
二、(10分)两个正数序列A=a1,a2,a3,…..am和B=b1,b2,b3,…bn已经存入两个单链表中,设计一个算法,判别序列B是否是序列A的子序列。
三、(12分)编写算法判别二叉树是否为平衡二叉树。
四、(13分)编写一算法,利用叶子结点中的空指针域将所有叶子结点链接为一个带头结点的双链表,算法返回头结点的地址。
五、(18分)对于一个使用邻接表存储的有向图G,可以利用深度优先遍历方法,对该图中结点进行拓扑排序。
其基本思想是:
在遍历过程中,每访问一个顶点,就将其邻接到的顶点的入度减一,并对其未访问的、入度为0的邻接到的顶点进行递归。
(1)给出完成上述功能的图的邻接表定义(结构):
(4分)
(2)定义在算法中使用的全局辅助数组。
(4分)
(3)写出在遍历图的同时进行拓扑排序的算法:
(10分)
六、(20分)回答下列问题:
(1)、试找出满足下列条件的二叉树(4分)
1》先序序列与后序序列相同2》中序序列与后序序列相同
3》先序序列与中序序列相同4》中序序列与层次遍历序列相同
(2)、已知一棵二叉树的中序序列和后序序列分别为DBEAFIHCG和DEBHIFGCA,画出这棵二叉树。
(4分)
(3)已知一棵二叉树的中序序列和后序序列,写一个建立该二叉树的二叉链表存储结构的算法。
(12分)
东北大学2000考研题
一、(20分)简要回答下列问题:
1、(3分)内存中一片连续空间(不妨蛇地址从1到M)提供给两个栈S1和S2使用,怎样分配这部分存储空间,使得对任一个栈,仅当这部分空间全满时才发生上溢。
2、(5分)假设字符a,b,c,d,e,f的使用频度分别是0.07,0.09,0.12,0.22,0.23,0.27,写出a,b,c,d,e,f的Huffman(哈夫曼)编码。
3、(4分)一棵共有n个结点的树,其中所有分支结点的度均为K,求该树中叶子结点的个数。
4、(4分)下图表示一个地区的通讯网,边表示城市间的通讯线路,边上的权表示架设线路花费的代价,如何选择能沟通每个城市且总代价最省的n-1条线路,画出所有可能的选择。
16
21115
196
3314
186
5、(4分)在起泡(冒泡)排序过程中,有的关键字在某趟排序中可能朝着与最终方向相反的方向移动,试举例说明之。
快速排序中有没有这种现象?
二、(15分)设有一个由正整数组成的无序(向后)单链表,编写完成下列功能的算法:
1、找出最小值结点,且打印该数值;
2、若该数值是奇数,则将其与直接后继结点的值交换;
3、若该数值是偶数,则将其直接后继结点删除;
三、(14分)解答下列问题:
1、(4分)将算术表达式((a+b)+c*(d+e)+f)*(g+h)转化为二叉树;
2、(10分)假设一个仅包含二元运算符的算术表达式以链表形式存储在二叉树b1中,写出计算该表达式值的算法。
四、(21分)解答下列问题:
1、(5分)画出有向图十字链表存储结构中头接点和表结点的结点结构。
2、(4分)下面哪一方法可以判断出一个有向图是否有环(回路):
1)深度优先遍历2)拓扑排序3)求最短路径4)求关键路径
3、(12分)假设一个有向图G已经以十字链表形式存储在内存中,试写一个判断该有向图中是否有环(回路)的算法。
五、(15分)写出删除二叉排序树bt中值为x的结点的算法(二叉排序树以二叉链表的形式存储,删除后仍然保持二叉排序性质)。
六、(15分)设有大小不等的n 个数据组(n个数据组中数据的总数为m),顺序存放在空间区D内每个数据占一个存储单元,数据组的首地址由数组S给出,(如下图所示),试编写将新数据X插入到第I个数据组的末尾且属于第I个数据组的算法,插入后,空间区D和数组S的相互关系仍保持正确。
D
LS[1..n]
东北大学
2001年硕士学位研究生试题
一.简要回答下列问题:
1.在执行某个排序算法的过程中,出现了排序关键字朝着最终排序相反方向的移动,从而认为该算法是不稳定的。
这种说法对么?
为什么?
2.从一棵二叉排序树中删除两个元素后,该二叉排序树的形态是否与两个元素的删除次序有关?
为什么?
3.如在内存中存放一个完全二叉树,在树上只进行下面两个操作:
1>寻找某个结点的双亲;2:
>寻找某个结点的的儿子;请问应该用何种结构来存储二叉树。
4.有字符串次序为3*-y-a/y^2,利用栈,给出将次序改为3y-*ay^/-的操作步骤。
(可用X代表扫描该字符串过程中顺序去一个字符进栈的操作,用s代表从栈中取一个字符的出栈操作。
例如:
abc变为bca的操作步骤为XXSXSS).
5.写出广义表B=(a,b)=(a,(b,c(d,e))),D=(a,B,C),E=((a,b),E)的存储结构(任意一种存储方法均可)
6.有n个叶子结点的哈夫曼树的结点总数是多少?
二设有一个正整数序列组成的单链表(按递增次序有序,且允许有相等的整数存在),试写能实现下列功能的算法:
(要求用最少的时间和最少的空间)
1:
确定在序列中比正整数大的数有几个(相同的数只计算一个,如(20,20,17,16,15,15,11,10,8,7,7,5,4))中比10大的数有5个);
2:
在单链表将比正整数小的数x小的数将按递减次序排列;
3:
将正整数x大的偶数从单链表删除。
三设t是一个满二叉数,编写一个将t的先序序列转换为后续序列的递归算法。
四解答下列问题:
1:
画出下列给出二叉数的后续线索二叉数;
2:
写出后序线索二叉数的非递归遍历算法。
五再有向图g中,如果r到g中的每个节点都有路径可达,则称结点r为
g的根结点,编写一个算法完成下列功能:
1:
建立有向图的邻接表存储结构;
2:
判断有向图g是否有根,若有,则打印出所有的根结点的值。
六.对下面的关键字集(30,15,21,40,25,26,36,37)若查找表的装添因子为0.8采用线性再散列方法解决冲突,做:
1>设计哈希表函数:
2:
>画出哈希表;3>计算查找成功和查找失败的平均查找长度;4>写出哈希表中某个数据元素删除的算法。
东北大学2002考研题
一、回答下列问题:
(24分)
1,如果用一个循环数组q[0..m-1]表示队列时,该队列只有一个队列头指针front,不设队列尾指针rear,而改置计数器count用以记录队列中结点的个数。
1)编写实现队列的基本运算:
判空、入队、出队(3分)
2)队列中能容纳元素的最多个数是多少?
(1分)
2、设有对角矩阵a[1..n,1..n]把非零元素按列存储在向量b[1..3*n-2]中,使得b[k]=a[I,j].
求:
(1)用I,j表示k的下标变换公式(2分)
(2)用k表示I,j的下标变换公式(2分)
3、设二叉排序树中关键字由1到1000的整数组成,现要查找关键字为363的结点,下述评关键字序列哪一个不可能是在二叉排序树中找到的序列?
说明原因。
(4分)
(1)51,250,501,390,320,340,382,363
(2)24,877,125,342,501,623,421,363
4、设有n个无序元素,按非递减次序排序,但只想得到前面长度为k的部分序列,其中n>>k,最好采用什么排序方法?
为什么?
(2分)
如果有这样一个序列{59,11,26,34,17,91,25},得到的部分序列是:
{11,17,25},对于该例使用所选择的方法实现时,共执行多少次比较?
(3分)
5、在B-树和B+树中查找关键字时有什么不同?
(2分)
6、写出对关键字序列{503,087,512,061,908,124,897,275,653,426}
建立一棵平衡二叉树的过程,并写出调整平衡时的指针变化。
(5分)
二、解答下列问题:
(10分)
1.画出对长度为10的有序表进行二分查找的判定树并求其等概率时查找成功的平均查找长度(5分)。
2.设有一组关键字{9,01,23,14,55,20,84,27},
采用哈希函数:
H(key)=keymod7,表长为10,用开放地址法的二次探测再散列方法Hi=(H(key)+di)mod10(di=1*1,2*2,3*3….)解决冲突。
要求:
对该关键字序列构造哈希表,并计算查找成功的平均查找长度(5分)。
三、已知L为没有头结点的的单链表中第一个结点的指针,每个结点数据域存放一个字符,该字符可能是英文字母字符或数字字符或其他字符,编写算法构造三个以带头结点的单循环链表表示的线性表,使每个表中只含同一类字符。
(要求用最少的时间和最少的空间)(15分)
四、对以二叉链表存储的非空二叉树,从右向左依次释放所有的叶子结点,释放的同时把结点值存放到一个向量中
要求:
(1)用文字写出实现上述过程的基本思想(3分)
(2)写出算法(12分)
五、设二叉排序树已经以二叉链表的形式存储在内存中,使用递归方法,求各结点的平衡因子并输出。
要求:
(1)用文字写出实现上述过程的基本思想(3分)
(2)写出算法(12分)
六、假设一个有向图g已经以右图所示的逆邻接表形式存储在内存中,
要求:
(1)写出逆邻接表的存储结构定义(3分)
(2)用文字写出在逆邻接表上实现拓扑排序的基本思想(3分)
(3)写出在逆邻接表上实现拓扑排序的算法(15分)。
东北大学2003年攻读硕士学位研究生试题
考试科目:
C语言程序设计与数据结构
数据结构部分
一、(20分)简要回答下列问题
1.(7分)对于有n个顶点的无向图和有向图,采用邻接矩阵表示,如何判断以下问题:
图中有多少条边?
任意两个顶点i和j之间是否有边相连?
任意一个顶点的度是多少?
2.(8分)判别下列序列是否为堆(小根堆或大根堆),若不是,则将其调整为堆:
(1)(100,86,48,73,35,39,42,57,66,21)
(2)(12,70,33,65,24,56,48,92,86,33)
(3)(05,23,20,35,28,38,29,61,56,76,40,100)
3.(5分)设A和B均为下三角矩阵,每一个都有n行n列。
因此在下三角区域中各有n(n+1)/2个无素。
另设有一个二维数组C,它有n行n+1列。
试设计一个方案,将两个矩阵A和B中的下三角区域元素存放于同一个C中。
要求将A的下三角区域中的元素存放于C的下三角区域中,B的下三角区域中的元素转置后存放于C的上三角区域中。
并给出计算A的矩阵元素aij和B的矩阵元素bij在C中的存放位置下标的公式。
二、(15分)已知f为单链表的表头指针,链表中存储的都是整型数据,试设计算法将此链表的结点按照递增次序进行就地排序。
三、(20)给出中序线索二叉树的结点结构,试编写在不使用栈和递归的情况下先序遍历中序线索二叉树的算法。
四、(20)设关键字是一个由26个小写字母组成的字符串,哈希表的长度为26。
试编写算法,建立哈希表,并以第一个字符的字典顺序输出哈希表中的所有关键字。
设哈希函数为hash(x)=x中的第一个字符在字典顺序中的序号,采用线性探测再散列法来解决冲突。
(假设函数f(x)能够计算出x中的第一个字符在字典顺序中的序号。
)
C语言程序设计部分
一、回答下列问题(10分,每小题5分,答案写在答卷纸上)
1.下面定义是否正确,为什么?
void(*f(intno))();
写出指向函数LRESULTMyProc();函数指针的定义,并利用该指针调用函数MyProc。
2.简述C语言中,参数处理的方式。
二、写出下列程序的运行结果(20分,每小题5分,答案写在答卷纸上)
1.
intmain(){
charstrlist[3][5]={’\0’};
strcpy(strlist[1],”write--”);
strcpy(strlist[2],”here”);
printf(“%s/%s/%s”,strlist[0],strlist[1],strlist[2]);
}
2.
intmain(){
intk;
charc;
for(k=1,c=’A’;c<’F’;k++={
switch(++c){
case’A’:
k++;break;
case’B’:
k*=2;break;
case’C’:
k-;
case’D’:
k%=3;continue;
default:
k+=2;
case’E’:
k/=2;
case’F’:
k++;
}
k++;
}
printf(“%d”,k);
}
3.
voidf(int*p,int*a){
*p=10;
p=a;
*p=100;
}
intmain(){
intx=0,*p,a[3]={1,2,3};
p=&x;
f(p,a);
printf(“%d-%d-%d-%d”,x,*p,a[0],a[1]);
}
4.
intmain(){
floatscore[4]={{60,47,80,26},{65,59,67,90},{43,78,90,56}};
float*search(float(*pointer)[4],int*pn);
float*p;
inti,k=0,flag=1;
for(i=0;i<3;i++,k=0,flag=1={
while((p=search(score+i,&k)==*(score+i)){
if(flag){printf(“\nNo.%dscores:
”,i);flag=0;}
printf(“%7d%5.1f”,k+1,*(p+k));
k++
}
}
}
float*search(float(*pointer)[4],int*pn){
inti;
float*pt;
pt=*(pointer+1);
for(i=*pn;i<4;i++=
if(*(*pointer+i)<60={
*pn=i;return*pointer;
}
returnpt;
}
三、(10分)已知2000年1月1日为星期六,编程求任意给定年元月1日的星期。
四、(17)今有一英汉词典文件EC.txt(文件大小超过1MB),每一词条格式如下:
#词条[[%i词性[%z汉译!
]……]……]
例如book词条如下:
#book%in%z书!
%z支票!
%z帐簿!
%i,vt%z预定!
%z登记姓名!
编程完成
(1)对词典建立索引文件,每间隔10kb,抽取一词条,当不是完整词条时,抽取不超过10kb的最大间隔的词条。
索引文件格式为
词条词条在文件中的位置
其中,词条为50bytes,位置长整数占8bytes。
该功能用函数CreateIndex完成。
(2)根据索引大小,将建立的索引内容装入一连续缓冲区。
该功能用函数LoadIndex完成。
五、(18分)用回溯算法,编写函数fill(intnum,intn),用0到num-1的数填充n×n的矩阵,要求填充的数不能重复,各行元素之和相同,各列元素之和也相同,输出所有
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 东北大学 历年 初试 考研 分享