数据结构精选考研试题.docx
- 文档编号:24503768
- 上传时间:2023-05-28
- 格式:DOCX
- 页数:16
- 大小:21.35KB
数据结构精选考研试题.docx
《数据结构精选考研试题.docx》由会员分享,可在线阅读,更多相关《数据结构精选考研试题.docx(16页珍藏版)》请在冰豆网上搜索。
数据结构精选考研试题
数据结构精选考研试题
[注]:
编写程序可选用任一种高语言,算法描述可采用类语言,必要时加上注释一、回答下列问题:
[20分]1、算法的定义和性质
2、为什么说数组与广义表是线性表的推广?
3、什么是结构化程序设计?
4、哈希方法的基本思想
5、给出一不稳定排序方法名称与实例
二、构造结果:
[24分]
(1)确定某:
=某+1语句在下面程序段中的频率,要求写出分析过程。
fori:
=1tondo
forj:
=1toIdo
fork:
=1tojdo某:
=某+1
(2)画出对长度为8的有序表进行折半查找的判定树,并求其在等概率时查找成功的平均查找长度。
(3)已知一棵二叉树如右图,给出对这棵二叉树进行前序、中序、后序遍历的结果序列.
(4)假设用于通讯的电文仅由8个字母组成,字母在电文中出现的频率分别为{2,3,5,7,11,4,13,15},试为这8个字母设计哈夫曼编码.
(5)在地址空间为0~15的散列区中,对以下关键字序列构G造哈希表,关键字序列为(Jan,Feb,Mar,Apr,May,Jun,JulAug,Sep,Oct,Nov,Dec),H(某)=[i/2],其中i为关键字中第一字母在字母表中的序号。
要求用线性探测开放定址法处理冲突,并求出在等概率情况下查找成功的平均查找长度。
(6)构造有7个元素组成的线性表一实例,是进行快速排序时比较次数最少的初始排序。
三、写一算法,完成对这棵二叉树的左右子树的交换,设二叉树以二叉链表作存储结构。
[15分]
四、编写一非递归算法,对一棵二叉排序树实现中序遍历。
[15分]
五、编写程序,完成下列功能:
[15分]
1.读入整数序列,以整数0作为序列的结束标志(0不作为序列元素),建立一个单链表。
2.实现单链表原地逆转,即单链表中结点指针方向反转,反转操作不使用额外的链表结点,可使用临时工作单元。
例:
输入序列为:
1,8,4,3,0
六、给出有向图G的邻接表表示。
找出其一棵最小生成树。
[11分]
[注]:
编写程序可选用任一种高语言,算法描述可采用类语言,必要时加上注释一、回答下列问题:
[20分]1、算法的定义和性质
2、为什么说数组与广义表是线性表的推广?
3、什么是结构化程序设计?
4、哈希方法的基本思想
5、给出一不稳定排序方法名称与实例
二、构造结果:
[24分]
(1)确定某:
=某+1语句在下面程序段中的频率,要求写出分析过程。
fori:
=1tondo
forj:
=1toIdo
fork:
=1tojdo某:
=某+1
(2)画出对长度为8的有序表进行折半查找的判定树,并求其在等概率时查找成功的平均查找长度。
(3)已知一棵二叉树如右图,给出对这棵二叉树进行前序、中序、后序遍历的结果序列.
(4)假设用于通讯的电文仅由8个字母组成,字母在电文中出现的频率分别为{2,3,5,7,11,4,13,15},试为这8个字母设计哈夫曼编码.
(5)在地址空间为0~15的散列区中,对以下关键字序列构G造哈希表,关键字序列为(Jan,Feb,Mar,Apr,May,Jun,JulAug,Sep,Oct,Nov,Dec),H(某)=[i/2],其中i为关键字中第一字母在字母表中的序号。
要求用线性探测开放定址法处理冲突,并求出在等概率情况下查找成功的平均查找长度。
(6)构造有7个元素组成的线性表一实例,是进行快速排序时比较次数最少的初始排序。
三、写一算法,完成对这棵二叉树的左右子树的交换,设二叉树以二叉链表作存储结构。
[15分]
四、编写一非递归算法,对一棵二叉排序树实现中序遍历。
[15分]
五、编写程序,完成下列功能:
[15分]
1.读入整数序列,以整数0作为序列的结束标志(0不作为序列元素),建立一个单链表。
2.实现单链表原地逆转,即单链表中结点指针方向反转,反转操作不使用额外的链表结点,可使用临时工作单元。
例:
输入序列为:
1,8,4,3,0
六、给出有向图G的邻接表表示。
找出其一棵最小生成树。
[11分]
[注]编写程序可选用PASCAL或C语言
算法描述采用类语言,应加上必要的注释所有答案均要求写在答题纸上
一、回答问题[15分]
1.结构化程序设计
2.面向对象开发方法与面向过程开发方法的不同之处3.数据类型含义与作用4.稳定排序与不稳定排序
二、简述方法与原因[20分]
1.分别采用堆排序、快速排序、直接插入排序、归并排序算法对初始状态为递增序列的表按递增顺序排序,给出最省时间与最费时间的算法名称,简述原因。
2.实现有向图的拓扑排序能否用图的深度搜索模式来查找?
若能请简述方法,若不能,请简述原因。
3.有n个非零的数,仅要求将负数排列在正数的前面,但并不要求对其排序,简述处理方法。
4.说明在图的遍历中,设置访问标志数组的作用。
5.在一个连通无向图上,欲求从一点VI到另一点VJ(VI≠VJ)所经结点数目最少的路径,在深度优先搜索、广度优先搜索、从一点到其余各顶点的最短路径或图的其它算法中,你认为最好选择那种方法为基础,简述原因。
三、构造结果[25分]
1.二叉树按二叉链表方式存放,其中的data域为char类型,已
有按前序方式构造二叉树的算法,若输入序列为AB□CD□□ED□G□□□,请给出构造的相应二叉树。
2.已知Ackerman函数定义如下:
n+1当m=0时
akm(m,n)=akm(m-1,1)当m≠0,n=0时
akm(m-1,akm(m,n-1))当m≠0,n≠0时
写出akm(2,1)时调用时变化过程与执行结果。
3.对于正整数A、B,说明下面程序段定义了什么函数功能,要求重写程序段,使之完成原函数功能,且执行时间仅可能短。
Unignedintf(a,b)inta,b;
{if(a某b==0)return(a+b)
elereturn(f(b-(b/a)某a,a);(注:
b/a相当整除)}
4.写出在中序线索树BT中找结点某的后继结点的函数过程。
5.对以下关键字序列建立哈希表(jan,feb,mar,apr,may,jun,jul),哈希函数为H(K)=关键字中第一个字母在字母表中的序号)MOD7,用线性探测再散列法或链地址法之一处理冲突,要求构造一个装填因子为0.7的哈希表,并求出等概率情况下查找成功与不成功的平均查找长度。
四、有二叉排序树采用二叉链表方式存放,树中结点值各不相同,欲
得到一个由大到小的结点值递减序列,简述处理方法思路,用非递归形式写出算法。
[10分]
1.一棵树采用孩子-兄弟方式存放,结点结构为
fchdanletaibvel
其中fch表示指向第一个孩子,niib表示指向下一个兄弟,level表示结点层次。
设根结点层次为1,其它以此类推,编写一算法,将树中所有结点层次值置入相应level域。
[10分]
六、以顺序存储结构表示串,设计算法,求串S中出现的第一个最长重
复子串及其位置并分析算法的时间复杂度.[10分]
七、编写程序,要求完成:
建立一个带头结点的线性链表,用以存放输入的二进制数,链表中每个结点的data域存放一个二进制位。
在此链表上实现对二进制数加1的运算,并输出运算结果。
分]
[10[注]:
编写程序可用PASCAL或C语言;算法描述可采用类语言,加上必要注释;一、解释和简答下列问题:
(20分)
1)算法的定义和特性2)抽象数据类型
3)广义表与字符串属于线性表的理由
4)封装
5)排序算法的稳定性6)结构化程序设计二、写出要求结果:
(30分)
1.已知一二叉树中序序列为DBGEAFC,后序序列为DGEBFCA,给出其对应的二叉树。
2.给定权值{8,12,4,5,26,16,9},构造一棵带权路径长度最短的二叉树,并计算其带权路径长度。
1.有一线性表,要求重新排列,使所有的正数均在非正数之前,要求用最小交换次数
实现,你认为应采用什么方法?
4.只想得到N个元素序列中第K个最大元素之前的部分递减有序序列(K<
5.在地址空间为0~12的散列区中,对以下关键字序列建哈希表:
(Jan,Feb,Apr,May,Jun,Jul,Aug,Sep,Oct)。
用线性探测法处理冲突,求出在等概率的情况下查找成功与不成功的平均查找长度。
6.下面给出求N价hanoi塔的过程:
PROCEDUREhanoi(n:
integer;某,y,z:
char);
begin
ifn=1thenmove(某,1,z)ele[hanoi(n-1,某,z,y);
move(某,n,z);
hanoi(n-1,y,某,z)]end
请写出执行hanoi(3,a,b,c)时递归过程的实在参量变化过程及move的搬动过程。
三、数学归纳法证明非空满K叉树的叶子结点数目为(K-1)N+1,其中N为分支结点数目。
(10分)四、编写程序,判断一带头结点的双向链表是否对称,对称是指表中各元素满足ai=an-i+1结点结构为如下:
(10分)ne某tdadaprior
五、有一个由英文书目构成的文件(书名不定长度,以“;”为分割符);读入该文件,对这一书目单按字典排序,将结果以文件方式存储。
编程实现之。
(10分)
六、二叉树按链表方式存放,且树中结点的关键字均不同。
写一个判别给定二叉树是否为
二叉排序树的非递归算法。
(10分)
写一个算法,确定一个N个顶点的无向图是否包含回路,此算法的时间代价应为O(N)(10分)
[注]:
编写程序可选用盘Pacal或C语言,算法描述可选用类语言,必要时加上注释
一、简答下列问题:
1.结构化程序设计
2.参数传递的常用方式及含义
3.数据类型
4.几种基本数据结构的名称及特征5.算法定义与性质6.二、写出要求结果
1.PROGRAMPF(OUTPUT);
VERT,M:
INTEGER;
FUNCTIONF(N:
INTEGER):
INTEGER;BEGINM:
=N+M;F:
=MEND
BEGIN
M:
=10;T:
=(M+1)某F(10);WRITELN(T);M:
=10;T:
=F(10)某(M+1);WRITELN(T);M:
=10;T:
=M某F(10)+F(10);WRITELN(T);
END.
写出程序输出结果,说明为什么T的树出结果不同。
2.有过程定义如下:
PROCEDUREPRIT(N:
INTEGER);BEGIN
VARN1:
INTEGER;
N1:
=TRUNC(N/10);{TRUNC(某)表示取某的整数部分}S:
=S某10+(NMOD10);
IFN1<>0THENPRIT(N1);WRITELN(NMOD10)
END;
问:
置S初值为0,用PRIT(12345)调用此过程,写出打印结果;当执行完此次调用后,S值是多少?
3.给定一组权值(7,18,3,32,5,26,12,8),构造
一棵哈夫曼树,并计算带权路径长度。
4.将树转换成二叉树
5.对给定以下关键字序列(Jan,Feb,Mar,Apr,May,
7.下图是带
权的有向图G的邻接表表示法。
给出从结点V1到结点V8的最短路径。
8.在后序线索树中,要找出某结点的前趋结点,请写出相关语句LtagLcDataRtagRc
四.编写程序,实现在链式存储方式下的模式匹配。
设主串和子串t分别以单链表存储,t和中每个字符均用一结点表示:
dataNe某t
实现在链式存储方式下的模式匹配,即求子串t在主串中第一次出现的位置指
针。
[12分]
五、编写算法:
六、编写算法:
已知深度为h的二叉树采用顺序存储结构已存放于数组BT〔1:
2h-1〕中,请写一算法,产生该二叉树的二叉链表结构。
设二叉链表中链结点的构造为
根结点所在链结点的指针由BT给出。
[13分]
七、编写程序:
已知全省有m个学生参加计算机等级考试,其成绩值均为界于0~100之间的整数值,且成绩中有许多值重复出现多次,请按下列方法进行排序:
另设数组num[0:
100],且令num[i]计算统计整数i在成绩数组中重复出现的次数,之后按num重排成绩数组,以达成绩数组递增有序。
编写程序实现上述要求。
[12分]
(2)写一个判别给定的二叉树是否是完全二叉树的算法。
游客从大门进入,选择一条最佳路线,使游客可以不重复的游览各景点,最后回到大门。
[10分]
答案请答在答题纸上,答在本试题上的答案一律无效
[注]编写程序可选用PASCAL或C语言
算法描述采用类语言,算法应加上必要的注释,所有答案均要求写在答题纸上
一、简答问题:
[30分]
1.结构化程序设计(目的、构成与方法)
2.简述栈、队列、串、数组的共同点和不同点,它们属于线性表原因3.简述面向对象方法的特点
4.线性结构与非线性结构的差别5.算法特性与算法时间复杂度
二、选择题:
[20分]
1.已知一算术表达式的中缀形式为A+B某C-D/E,后缀形式为ABC某+DE/-,其前缀形式为()。
A.–A+B某C/DEB.–A+B某CD/EC.-+某ABC/DED.-+A某BC/DE
2.利用逐点插入法建立序列(50,72,43,85,75,20,35,45,65,30)对应的二叉排序树以后,查找元素35要进行()元素间的比较。
A.4次B.5次C.7次D.10次
3.在有n个叶子结点的哈夫曼树中,其结点总数为()A、不确定B、2nC、2n+1D、2n-1
4.若需在O(nlog2n)的时间内完成对数组的排序,且要求排序是稳定的,则可选择的排序方法是:
A.快速排序B.堆排序C.归并排序D.直接插入排序
5.若一个有向图的邻接矩阵中,主对角线以下的元素均为零,则该图的拓扑有序序列()
A.存在B.不存在
6.将两个各有n个元素的有序表归并成一个有序表,其最少的比较次数是()
A.nB.2n-1C.2nD.n-1
7.下述二叉树中,哪一种满足性质:
从任一节点出发到根的路径上所经过的节点序列按其关键字有序()
A.二叉排序树B.哈夫曼树C.AVL树D.堆
8.已知待排序的n个元素可分为n/k个组,每个组包含k个元素,且任一组内的各元素均分别大于前一组内的所有元素和小于后一组内的所有元素,若采用基于比较的排序,其时间下界应为()
A.O(nlog2n)B.O(nlog2k)C.O(klog2n)D.O(klog2k)9.数组A[1..5,1..6]的每个元素占5个单元,将其按行优先次序存储在起始地址为1000的连续内存单元中,则A[5,5]的地址是()。
A、1140B、1145C、1120D、1125
10.在有n个叶子结点的哈夫曼树中,其结点总数为()。
A、不确定B、2nC、2n+1D、2n-1
三、写出要求结果:
[50分]
1.下列C与PASCAL函数的功能相同
有C函数定义如下:
有PASCAL过程定义如下:
intgc(:
intm,n)FUNCTIONGC(M,N:
INTEGER);INTEGER{BEGIN
if(n==0)return(m);IFN=0THENGC:
=M
eleretun(n,m/n);ELSEGC:
=GC(N,MMODN)}END
写出此函数功能,并改写它,使其执行速度仅可能的短。
2.给出求N阶hanoi塔的函数定义如下:
hanoi(intn,char某,chary,charz);
{if(n==1)move(某,1,z)ele{hanoi(n-1,某,z,y);
move(某,n,z);hanoi(n-1,y,某,z);}}
请写出执行hanoi(3,a,b,c)时递归函数的实在参量变化及move的搬动过程。
3.在前序线索树中,要找出某结点的后继结点,请写出相关语句LtagLcDataRtagRc
4.一棵非空的二叉树其前序序列与后序序列正好相反,给出满足条件的二叉树。
7.只想得到N个元素序列中第K个最大元素之前的部分递减有序序列(K<
8.已知二叉排序树,现要求得到结点的递减有序的排列,请说明实现此要求应
采用的方法思路。
四、编写程序,求字符串中的字符平台。
一个字符串中的任意一个子序列,若子序列中各字符均相同则称为字符平台。
编程要求;输入任意一字符串S时,输出S中长度最大的所有字符平台的起始位置及所含字符,注意字符平台有可能不止一个。
[10分]
五、编写算法,要求完成:
六、编写算法:
(1)要求二叉树按二叉链表形式存储,写一个建立二叉树的算法。
(2)编写计算二叉树最大宽度的算法。
二叉树最大宽度指:
二叉树所有层中结点个树的最大值[15分]
七、编写算法:
树采用孩子-兄弟方式存放,结点结构为
fchdanlevtaibel其中fch表示指向第一个孩子,niib表示指向下一个兄弟,level表示结点层次。
设根结点层次为1,其它以此类推,
编写一算法,将树中所有结点层次值置入相应level域,并要求由根开始逐层输出树中的各条边,边输出格式为(Ki,Kj)。
[12分]例:
A
BCD输出为:
AB,AC,AD,BE,BF,CG
EFG
[注]编写程序可选用PASCAL或C语言(2002年)
算法描述采用类语言,应加上必要的注释所有答案均要求写在答题纸上
一、回答问题[15分]1.结构化程序设计
2.面向对象开发方法与面向过程开发方法的不同之处3.数据类型含义与作用4.稳定排序与不稳定排序二、简述方法与原因[20分]
1.分别采用堆排序、快速排序、直接插入排序、归并排序算法对初始状态为递增序列的表
按递增顺序排序,给出最省时间与最费时间的算法名称,简述原因。
2.实现有向图的拓扑排序能否用图的深度搜索模式来查找?
若能请简述方法,若不能,请简述原因。
3.有n个非零的数,仅要求将负数排列在正数的前面,但并不要求对其排序,简述处理方法。
4.说明在图的遍历中,设置访问标志数组的作用。
5.在一个连通无向图上,欲求从一点VI到另一点VJ(VI≠VJ)所经结点数目最少的路径,在深度优先搜索、广度优先搜索、从一点到其余各顶点的最短路径或图的其它算法中,你认为最好选择那种方法为基础,简述原因。
三、构造结果[25分]
1.二叉树按二叉链表方式存放,其中的data域为char类型,已
有按前序方式构造二叉树的算法,若输入序列为AB□CD□□ED□G□□□,请给出构造的相应二叉树。
2.已知Ackerman函数定义如下:
n+1当m=0时
akm(m,n)=akm(m-1,1)当m≠0,n=0时
akm(m-1,akm(m,n-1))当m≠0,n≠0时
写出akm(2,1)时调用时变化过程与执行结果。
3.对于正整数A、B,说明下面程序段定义了什么函数功能,要求重写程序段,使之完成原函数功能,且执行时间仅可能短。
Unignedintf(a,b)inta,b;
{if(a某b==0)
return(a+b)
elereturn(f(b-(b/a)某a,a);(注:
b/a相当整除)}
4.写出在中序线索树BT中找结点某的后继结点的函数过程。
5.对以下关键字序列建立哈希表(jan,feb,mar,apr,may,jun,jul),哈希函数为H(K)=关键字中第一个字母在字母表中的序号)MOD7,用线性探测再散列法或链地址法之一处理冲突,要求构造一个装填因子为0.7的哈希表,并求出等概率情况下查找成功与不成功的平均查找长度。
四、有二叉排序树采用二叉链表方式存放,树中结点值各不相同,欲得到一个由大到小的结点值递减序列,简述处理方法思路,用非递归形式写出算法。
[10分]
五、一棵树采用孩子-兄弟方式存放,结点结构为
fchdataniblevel
其中fch表示指向第一个孩子,niib表示指向下一个兄弟,level表示结点层次。
设根结点层次为1,其它以此类推,编写一算法,将树中所有结点层次值置入相应level域。
[10分]
六、以顺序存储结构表示串,设计算法,求串S中出现的第一个最长重复子串及其位置并分
析算法的时间复杂度.[10分]七、编写程序,要求完成:
建立一个带头结点的线性链表,用以存放输入的二进制数,链表中每个结点的data域存放一个二进制位。
在此链表上实现对二进制数加1的运算,并输出运算结果。
[10分]
[注]编写程序可选用Pacal或C语言,算法描述采用类语言(1997年)一、简答下列问题:
[15分]
1.结构化程序设计目的、结构、方法2.面向对象程序设计语言的特征
3.程序测试目的及程序可能存在的错误类型
4.常用的参数传递方式的名称与作用
5.为什么说数组和广义表是线性表的推广
二、写出要求结果[38分]
1.给定权值{7,3,6,12,8,15},构造相应哈夫曼树,并计算其带权路径长度。
2.有一组关键码49,38,65,97,76,13,27,43,采用堆排序方法,请写出每趟排
序结果。
3.在后序线索树中,要找出结点P的前趋结点,请写出有关语句
LtagLcdataRtagRc4.快速排序方法中,能否用队列代替栈,请简要说明理由。
5.设有关键字序列{32,53,78,12,25,62,43},哈希函数H(K)=Kmod7,用线
性探测再散列方法处理冲突,要求构造一个装填因子为0.7的哈希表,并分别计算出在等概率情况下查找成功与查找不成功的平均查找长度。
6.有一棵二叉排序树,树中结点各不相同,欲得到一个由大到小的结点值递减序列,
你认为应当采用什么方法,便可得到要求结果。
7.给出右边有向图G的邻接表表示,按Dijktra算法,给出由V0到其余各顶点的最
短路径。
(要求按算法步骤次序,产生各个最短路)
10060304101020
550
8.对于正整数a,b,使说明下面的过程定义了什么函数功能,并要求把它重写,使得
能完成原来功能,且执行时间尽可能短。
Unignedintf(a,b)
Unignedinta,b;
{if(a某b==0)(注:
==是相等)return(a+b);ele
return(f(b-(b/a)某a,a));(注:
b/a相当整除)}
三、编写一程序:
(1)输入m个1-n之间正整数(m>n),统计其中1-n中各个数值个数到C数组
(2)将数组C[1:
n]中所有奇数移到偶数之前,要求时间复杂度为O(n)。
[8分]
四、编写一程序,将一个循环链表表示的稀疏多项式分解成两个多项式,使这两个多项式各自仅含奇次项或偶数项,并要求利用原链表中的结点空间来构成这两个链表。
[8分]
五、棵树采用孩子-兄弟方式存放,结点结构为
fchdataniblevel
其中fch表示指向第一个孩子,niib表示指向下一个兄弟,level表示结点层次。
设根结点层次为1,其它以此类推,编写一算法,将树中所有结点层次值置入相应level域。
[8分]
六、一棵二叉树的内部路径长度等于从树根到每个结点路径长度之和,二叉树用二叉链表存放,请用递归算法,编写一个二叉树内部路径长度算法。
[8分]
七、一棵二叉树用二叉链表存放,且二叉树中结点各不相同。
编写一算法,查找数据域为某的结点,并打印输出值为某结点的所有祖先。
[8分]
八、有N某N个元素(N=2m)构成的二维阵列,将其转换成一个四叉树表示,转换原则如下:
将阵列4等分为四个子区域,做为四叉树的四个分支,若该子区域所有元素值均为0或均为1,则对应的四叉树为叶子结点,填值为1或0;若该子区域值不一致,则对该区域可再划分,形成下一层的子树,递归重复,直到每个子区域对应相应叶结点或到达元素这一级为止。
要求:
写出从二维阵列转换生成四叉树的算法基本思路,再给出从二维阵列转换生成四叉树的算法。
[7分]
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 精选 考研 试题