[考研类试卷]计算机专业基础综合数据结构(数组和广义表)历年真题试卷汇编5.doc
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
[考研类试卷]计算机专业基础综合数据结构(数组和广义表)历年真题
试卷汇编5
一、综合题
1 简述广义表属于线性结构的理由。
【西北大学2000一、5(3分)】
2 数组、广义表与线性表之间有什么样的关系?【西北工业大学1998一、2(4分)】
3 什么是广义表?请简述广义表和线性表的主要区别。
【北京大学1997二、2(5分)】
4 求下列广义表的运算结果。
【南京航空航天大学1998三(10分)】
(1)CAR(CDR(((a,b),(c,d,(e,f)))
(2)CDR(CAR(((a,6b),(c,d,(e,f)))
(3)CAR(CDR[(CAR(((a,b),(e,f))))
(4)CDR(CAR(CDR(((a,b),(e,f))))
(5)CDR(CDR(CAR(((a,b),(e,f))))注:CAR运算相当于有些教材中的Head运算,CDR运算相当于Tail运算。
5 画出下列广义表的存储结构图,并利用取表头和取表尾的操作分离出原子e。
(a,(0,b),(((e)))【清华大学1995二(10分)】
6 画出下列广义表的两种存储结构图(0,A,B,(C,D),(E,F)。
【南京航空航天大学1999三(10分)】
7 知广义表A=(((a)),(b),c,(a),(((d,e))))
(1)画出其一种存储结构图;
(2)写出表的长度与深度;
(3)用求头部、尾部的方式求出e。
【东北大学1997一、2(5分)】
8 画出具有共享结构广义表(((b,c),d,(a),((a),((b,c),d),e,0)的存储表示。
【北京工业大学1996一、3(6分)】
9 已知下图为广义表的存储结构图,写出该图表示的广义表,并求该广义表的长度和深度。
【中国海洋大学2007一、1(8分)】
10 已知下图为广义表的头尾链表存储结构图,请给出该图表示的广义表。
【北京
理工大学2005三、1(4分)】
11 给出下列所示的三元多项式的广义表表示(分别以X1,X2,X3第一到第三层变元。
)P(X1X2X3)=X15X23X3+2X1X2X3+5X15X23X33+3X1X24X32+X2X3+6【华南理工大学2001一、2(4分)】
12 设某表H如下:
其中A,B,C为子表名,a1,a2,b1,c1,c2,x为其元素。
(1)试用广义表形式表示H,并写出运算HEAD㈣和TAIL㈣函数从日中取出单元素a2的运算;(2)画出表H的链式存储结构。
【北京科技大学1998三(10分)】
13 下列广义表,可以唯一对应一棵二叉树的有( ),并归纳出唯一对应的条件。
(1)(A(B(D,E),C(F))) (2)(A(B(D,E,C) (3)(A)(4)(A(B(C,D(E)))) (5)0【电子科技大学2003二、4(30/7分)】
二、设计题
13 二项式(a+b)n展开式的系数为C(n,0)=1,C(n,n)=1,对于n≥0;C(n,k)=C(n一
1,k)+C(n一1,k-1),对于0
14 试写一个递归算法,根据以上公式生成C(n,k)。
(6分)
15 试画出计算C(6,4)的递归树。
(4分)
16 试写一个非递归算法,既不用数组也不用栈,对于任意的0≤k≤n计算C(n,k)。
(6分)【清华大学1999五(16分)】
17 设计将数组A[n]中所有的偶数移到奇数之前的算法。
要求不增加存储空间,且时间复杂性为O(n)。
【哈尔滨工业大学2002十(8分)】
18 若S是n个元素的集合,则S的幂集P(S)定义为S所有子集的集合。
例如,
S=(a,b,c),P(S)={0,(a),(b),(c),(a,b),(b,c),(b,c),(a,b,c))。
给定S,写一递归算法求P(S)。
【东南大学1993五(15分)1997五(15分)】
19 编写算法打印出由指针Hm指向总表头的以十字链表形式存储的稀疏矩阵中每一行的非零元的个数。
注意:行、列及总表头结点的形式为:
它们已用val域链接成循环链表。
非零元的结点形式也同上,每一行(列)的非零元由right(down)域把它们链接成循环链表,该行(列)的表头结点即为该行(列)循环链表的表头。
【上海大学1998五(16分)】
20 试编写建立广义表存储结构的算法,要求在输入广义表的同时实现判断、建立。
设广义表按如下形式输入:(a1,a2,a3,…,a n),n≥0,其中a t或为单字母表
示的原子或为广义表,n=0时为只含空格字符的空表。
【北京工业大学1998十(15分)】
20 数组研1:1000中存放着1000个大小不同的正整数。
21 选择一分类算法使能最快地得到其中10个最大的数,简要说明理由;
22 编写一程序seek(),执行该程序时,在命令行中提供两个参数。
seek a n<enter>表示需打印H[]中n个最大数。
seek i n<enter>表示需打印H[]中n个最小数。
【浙江大学1994八(1 8分)】
23 已知两个定长数组,它们分别存放两个非降序有序序列,请编写程序把第二个数组序列中的数逐个插入前一个数组序列中,完成后两个数组中的数分别有序(非降序)并且第一数组中所有的数都不大于第二个数组中的任意一个数。
注意,不能另开辟数组,也不能对任意一个数组进行排序操作。
例如,第一个数组为:4,12,28第二个数组为:1,7,9,29,45输出结果为:1,4,7…………一第一个数组9,12,28,29,45……-一第二个数组【上海大学1998四(20分)】
24 设数组A[1..N]中,A[n一2k+1,n一k]和A[n一k+1.n]中元素各自从小到大排好序,试设计一个算法使A[n一2k+1..n]按从小到大次序排好序。
并分析算法所需的计算时间。
【福州大学1998四、3(10分)】
25 设A[1..100]是一个记录构成的数组,B[1..100]是一个整数数组,其值介于1~100之间,现要求按B[1..100]的内容调整A中记录的次序,比如当
B[1]=11时,则要求将A[1]的内容调整到A[11]中去。
规定可使用的附加空间为
O(1)。
【中科院计算所2000七(15分)】
26 给定有m个整数的递增有序数组a[1..m]和有n个整数的递减有序数组
b[1..n],试写出算法:将数组a和b归并为递增有序数组c[1一..m+n]。
(要求:算法的时间复杂度为O(m+n)。
)【华中理工大学2000八、1(10分)】
27 设A和B均为下三角矩阵,每一个都有n行n列。
因此在下三角区域中各有
n(n+1)/2个元素。
另设有一个二维数组C,它有n行n+1列。
试设计一个方案,将两个矩阵A和B中的下三角区域元素存放于同一个C中。
要求将A的下三角区域中的元素存放于C的下三角区域中,B的下三角区域中的元素转置后存放于C
的上三角区域中。
并给出计算A的矩阵元素a ij和B的矩阵元素b ij在C中的存放位置下标的公式。
【东北大学2003一、3(5分)】
28 设稀疏矩阵M m中有f个非零元素,用三元组顺序表的方式存储。
请设计一个算法,计算矩阵M的转置矩阵N,要求转置算法的时间复杂度为O(n+t)。
【苏州大学2005四(20分)】【中南大学2004三、4(10分)】【兰州大学2002八(10分)】
29 已知一个n×n的上三角矩阵口的上三角元素已按行主序连续存放在数组b中,请设计一个函数trans将b中元素按列主序连续存放至数组c中。
例:设
n=5 b=(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15) c=(1,2,6,3,7,10,4,8,11,1 3,5,9,12,14,15)【中国科学技术大学1997四、1(1 5分)】
30 试写出算法(C函数或C程序):输入m行n列整数矩阵a,若存在4个相邻的元素相同,即有a[i][j]=a[i][j+1]=a[i+1][j]=a[i+1][j+1] (1≤i<m,1≤j<n)则输出信息“True”,a[i][j]的值和这四个元素的下标值(找出一组同值元素即可);否则输出信息“False”。
分析算法的时间复杂度。
【华中科技大学2006五、1(15分)】。