北航自主招生考试题目
1.证明:具有 n 个结点的非空满二叉树,其叶结点的数目为 (n+1)/2 。
2.已知某带权连通图采用邻接矩阵存储,邻接矩阵以三元组表形式给出。邻接矩阵下三角
形部分的元素(不包括主对角线上元素)对应的各三元组分别为
) , ) , (5,2,4) ,
(5,3, (2,1,7) , (3,1,6) , (3,2,8) , (4,1,9) , (4,2,4) , (4,3,6) , (5,1, (5,4,2) 。请分
(
)
4.完全二叉树不一定是满二叉树,满二叉树一定是完全二叉树。
(
)
5.利用二叉树的前序遍历序列和后序遍历序列一定可以构造出一棵二叉树。
(
)
6.邻接表中边结点数目为偶扑排序不是检测有向图中是否存在回路的惟一方法。
(
)
8.采用折半查找的线性表只要求表中元素按值的大小有序排列就可以。
B . float a(3,4);
C . double
二叉排序树中查找到数据元素 62 时一共进行了(
)次元素之间的比较。
8.在一个图中,所有顶点的度数之和等于所有边数的(
)倍。
9.具有 n 个顶点的有向图最多有(
)条边。
10.具有 n 个顶点的无向连通图采用邻接矩阵表示,邻接矩阵中至少有
(
)个非
零元素。
11.将数据元素 2,4,6,8,10,12,14,16,18,20
结点的祖先定义为从根结点到该结点的所有分支上经过的结点。
已知非空二叉排序树采用二叉链表存储结构,链结点构造为
lchild
data
rchild,
根结点指针为 T。请写一非递归算法 , 依次打印数据信息为 item 的结点的祖先
结点。设结点的数据信息分别为整数,并且假设该结点的祖先结点存在。
第二部分
C 语言程序设计
依次存放于一个一维数组中 ( 设数组下标从 0
开 始 ) , 然 后 采 用 折 半 查 找 方 法 查 找 元 素 12 , 被 比 较 过 的 数 组 元 素 的 下 标 依 次 为
(
)。
12.若一个待散列存储的线性表为 K=(18,25,63,50,42,32,9,45) ,散列函数为 H(k)=k MOD9,
)。
15.设有 10000 个元素组成的序列,希望尽快挑选出其中前
10 个 ( 仅挑出前 10 个 !) 最大值
元,在不改变已有算法结构的前提下,插入排序法、快速排序法、
堆积排序法和泡排序法这
4 种内排序算法中,最合适的是(
)。
..........
.
.
.
三、综合题(本题共 15 分,每小题各 5 分)
)个元素的位置。
2.在非空双向循环链表中由 q 指的链结点前面插入一个 p 指的链结点的过程对应的语句依
次为:p->rlink=q; p->llink=q->llink;
q->llink=p;
(
)。
(空白处为一条语句)
3.在实际应用中, 当堆栈的最大长度难以估计时, 堆栈最好采用 (
)存储结构。
4.若 a,b,c,d 是初始为空的队列的输入序列, 则此时该队列的输出序列是 (
则能够正确使用 C 语言库函数的赋值语句
是(
)。
A. z=exp(y)+fabs(x);
B. y=log10(y)+pow(y);
C. z=sqrt(y-z);
D. x=(int)(atan2((doubl
e)x,y)+exp(y-0.2));
6.以下对二维数组 a 的正确说明是(
)。
A . int a[3][];
五、单项选择题(本题共 20 分,每小题各 1 分)
1.一个 C语言程序是由(
)。
A.一个主程序和若干个子程序组成
B.函数组成
C.若干过程组成
D.若干子程序组成
2.当把以下四个表达式用作 if 语句的控制表达式时, 其中有一个选项与其他三个选项的
含义不同,这个选项是(
)。
A.k%2
B.k%2==1
C.(k%2)!=0
D.!k%2==1
3.下列运算符中优先级最低的是(
A.+
B .&&
)。 C.?:
D.!=
4.以下能够正确地定义整型变量 a,b 和 c,并且为其赋初值 5 的语句是(
)。
A. int a=b=c=5;
B. int a,b,c=5;
C. a=5,b=5,c=5;
D. a=b=c=5;
5.若有说明: double y=0.5,z=1.5; int x=10;
则与元素 18 发生冲突的元素有(
)个。
13.若对序列 (1,2,5,3,4) 采用泡排序法按元素值从小到大进行排序,则整个排序过程中进
行的元素之间的比较次数为(
)。
14.若对序列 (tang, deng, an, wang, shi, bai, fang, liu)
采用选择排序法按字典顺序
进行排序,则第三趟排序结束时序列的状态是(
别画出该连通图所有可能的最小生成树。
3.已知散列函数为 H(key)=(key%3) MOD 11 ,散列地址空间为 [0..10] ,并且采用线性探测
再散列法处理冲突。请画出在初始为空的散列表中依次插入
22,41,53,8,46,30,1,31,66
以
后散列表的状态。
四、算法设计题(本题 10 分)
(
)
9.对具有 n 个元素的序列进行插入排序,排序的总趟数为
n-1 。 (
)
10.无论什么情况,快速排序法比其他排序法的时间效率都要高。
(
)
二、填空题(本题共 15 分,每小题各 1 分)
1.若长度为 n 的线性表采用顺序存储结构, 当不溢出时, 在其第 i 个位置 (1 ≤i ≤n+1) 插入
一个新的数据元素之前需要依次移动(
.
.
.
第一部分
数据结构
一、是非判断题(本题共 10 分,每小题各 1 分)
(对于下面给出的论述, 你认为正确, 请在小题后的括号中填入符号√, 否则,填入符号×)
1.对算法进行分析的目的是为了提高算法的质量。
(
)
2.一般情况下,双向链表比单向链表要占用更多的存储空间。
(
)
3.将插入与删除操作限制在表的一端的线性表被称为堆栈。
)。
5.若具有 n 个结点的二叉树采用二叉链表存储,则链表中有(
)个指针域存放
着 NULL。 6.已知二叉树的前序遍历序列为
ABDCEF,G 中序遍历序列为 DBCAFE,G其后序遍历序列为
(
)。
7.采用“逐点插入法”建立序列 (54,28,16,34,73,62,95,60,26,43)
的二叉排序树后, 在该