北航自主招生考试题目

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一部分数据结构

一、是非判断题(本题共10分,每小题各1分)

(对于下面给出的论述,你认为正确,请在小题后的括号中填入符号√,否则,填入符号×)1.对算法进行分析的目的是为了提高算法的质量。()

2.一般情况下,双向链表比单向链表要占用更多的存储空间。()

3.将插入与删除操作限制在表的一端的线性表被称为堆栈。()

4.完全二叉树不一定是满二叉树,满二叉树一定是完全二叉树。()

5.利用二叉树的前序遍历序列和后序遍历序列一定可以构造出一棵二叉树。()6.邻接表中边结点数目为偶数的图一定是无向图。()

7.拓扑排序不是检测有向图中是否存在回路的惟一方法。()

8.采用折半查找的线性表只要求表中元素按值的大小有序排列就可以。()

9.对具有n个元素的序列进行插入排序,排序的总趟数为n-1。()

10.无论什么情况,快速排序法比其他排序法的时间效率都要高。()

二、填空题(本题共15分,每小题各1分)

1.若长度为n的线性表采用顺序存储结构,当不溢出时,在其第i个位置(1≤i≤n+1)插入一个新的数据元素之前需要依次移动()个元素的位置。

2.在非空双向循环链表中由q指的链结点前面插入一个p指的链结点的过程对应的语句依次为:p->rlink=q; p->llink=q->llink; q->llink=p; ()。(空白处为一条语句)3.在实际应用中,当堆栈的最大长度难以估计时,堆栈最好采用()存储结构。4.若a,b,c,d是初始为空的队列的输入序列,则此时该队列的输出序列是()。5.若具有n个结点的二叉树采用二叉链表存储,则链表中有()个指针域存放着NULL。6.已知二叉树的前序遍历序列为ABDCEFG,中序遍历序列为DBCAFEG,其后序遍历序列为()。

7.采用“逐点插入法”建立序列(54,28,16,34,73,62,95,60,26,43)的二叉排序树后,在该二叉排序树中查找到数据元素62时一共进行了()次元素之间的比较。

8.在一个图中,所有顶点的度数之和等于所有边数的()倍。

9.具有n个顶点的有向图最多有()条边。

10.具有n个顶点的无向连通图采用邻接矩阵表示,邻接矩阵中至少有()个非零元素。11.将数据元素2,4,6,8,10,12,14,16,18,20依次存放于一个一维数组中(设数组下标从0开始),然后采用折半查找方法查找元素12,被比较过的数组元素的下标依次为()。

12.若一个待散列存储的线性表为K=(18,25,63,50,42,32,9,45),散列函数为H(k)=k MOD 9,则与元素18发生冲突的元素有()个。

13.若对序列(1,2,5,3,4)采用泡排序法按元素值从小到大进行排序,则整个排序过程中进行的元素之间的比较次数为()。

14.若对序列(tang, deng, an, wang, shi, bai, fang, liu)采用选择排序法按字典顺序进行排序,则第三趟排序结束时序列的状态是()。

15.设有10000个元素组成的序列,希望尽快挑选出其中前10个(仅挑出前10个!)最大值元,在不改变已有算法结构的前提下,插入排序法、快速排序法、堆积排序法和泡排序法这4种内排序算法中,最合适的是()。

三、综合题(本题共15分,每小题各5分)

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)。请分别画出该连通图所有可能的最小生成树。

3.已知散列函数为H(key)=(key%3) MOD 11,散列地址空间为[0..10],并且采用线性探测再散列法处理冲突。请画出在初始为空的散列表中依次插入22,41,53,8,46,30,1,31,66以后散列表的状态。

四、算法设计题(本题10分)

结点的祖先定义为从根结点到该结点的所有分支上经过的结点。

已知非空二叉排序树采用二叉链表存储结构,链结点构造为lchild data rchild, 根结点指针为T。请写一非递归算法, 依次打印数据信息为item的结点的祖先结点。设结点的数据信息分别为整数,并且假设该结点的祖先结点存在。

第二部分 C语言程序设计

五、单项选择题(本题共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; 则能够正确使用C语言库函数的赋值语句是()。

A.z=exp(y)+fabs(x); B.y=log10(y)+pow(y);

C.z=sqrt(y-z); D.x=(int)(atan2((double)x,y)+exp(y-0.2));

6.以下对二维数组a的正确说明是()。

A.int a[3][]; B.float a(3,4); C.double a[1][4]; D.float a(3)(4);

7.若有条件表达式(exp) ? a++ : b--,则以下表达式中能够完全等价于表达式(exp)的是()。

A.(exp==0) B.(exp!=0) C.(exp==1) D.(exp!=1)

8.以下不正确的if语句形式是()。

A.if(a>b&&a!=b); B.if(a==b) a+=b;

C.if(a

9.若有以下语句

int x=3;

do{ printf(“%d\n”,x-=2); }while(!(--x));

则上面程序段()。

A.输出结果是1 B.输出结果是3和0 C.输出结果是1和-2 D.是死循环10.以下for循环语句的执行次数是()。

for(x=0,y=0;(y=123)&&(x<4);x++);

A.执行4次 B.执行3次 C.是无限循环D.循环次数不定

相关文档
最新文档