|  | 
 
| 2014 考研专业课大纲已经发布,考生要对照大纲的变化好好复习,调整自己的规划。同时要关注各高校历年真题,利用真题和大纲做好考前的强化备考。文都教育 考研专业课频道为考生提供10大高校计算机复习考题,希望考生认真利用这些真题,仔细研究,寻找突破点,及时的查漏补缺,复习好计算机专业课,下面请看。 一.多选/填空题。
 1. 一个栈的入站元素序列是1,2,3,4,5若允许出栈操作可在任意可能的时刻进行,则下面的序列中。不可能出现的出栈序列是(),理由是()。
 A.3,4,2,5,1
 B.2,5,4,1,3
 C.2,3,1,5,4
 D.3,5,4,2,1
 2. 一棵二叉树的前序遍历序列为ABCDEFG,它的中序序列可能是()
 A. CABDEFG
 B. ABCDEFG
 C. DACEFBG
 D.BADCFEG
 3. 下面结构中最适于表示稀疏无向图的是(),适于表示有向图的是()
 A. 邻接矩阵
 B. 逆邻接表
 C. 邻接多重表
 D.十字链表
 E. 邻接表
 4. 采用败者树进行K路平衡归并时,总的(包括访外)效率与K()
 A. 有关
 B. 无关
 5. N个顶点连通无向图的邻接矩阵至少有()个非0元素,至多有()个非0元素;n个顶点的强连通有向图至少有()条弧。
 6. 含4个度为2的结点和5个叶子结点的二叉树,可有()个度为1的结点。
 二.简答题
 1. 上三角阵A(N*N)按行主序压缩存放在数组B中,其中A[I,j]=B[K].写出用I,J表示的K。
 2. 画出广义表A=(a,(b,()),(((),c)))的第一种存储结构(表结点第二指针指向余表)图,并用取首元(head())和取尾元(tail())函数表示原子c。
 3. 证明:在二叉树的三种遍历序列中,所有叶子结点间的先后关系都是相同的。要求每步论断都指出根据。
 4. 是述哈希表中不成功的平均查找长度概念,求法,和理由。
 5. 对于输入关键字序列48,70,65,33,24,56,12,92进行:
 a. 建立堆排序的初始堆(小顶堆),要求画出主要过程。
 b. 建一棵平衡二叉树,画出过程(至少每次调整有一张,标出最小不平衡子树的根)。
 三.下面程序段实现用尾指针表示,带头结点单链环的操作,请补足空缺部分。
 typeder struct node{ program ppp;
 Elemtype key; type elemtype=char;
 Struct node *next; link=^node;
 Node,*link; node=record
 Key:elemtype; next:link;
 Oid init(llink &p) } end;
 C语言
 Void ins(link &p,int I,elemtype e) {
 int j; link q,s;q=p->next; j=0;
 while (q!=p && jnext; j++;}
 if (②填空 ) exit(error)
 s=(link)malloc(sizeof(node));
 s->key=e; s->next=q->next=s; q->next=s;/*维护*/
 ③填空
 return;
 }
 void del(link &p,int I,elemtype &e) {
 int j; link q,s;
 q=p->next j=0;
 while (q!=p &&jnext; j++;}
 if (④填空 )exit(error)
 s=q->next; q->next=s->next; e=s->key;/*维护*/
 ⑤填空
 free(s); return;
 }
 find (link p,elemtype e) {
 int I; link q;
 q=p->next;⑥填空; q=q->next; I=1;
 while (⑦填空 ) {q=q->next; I++;}
 if (q=p->next) return 0;
 else return I;
 } /*循环条件中只有一次比较*/
 类PASCAL语言
 proc init(var p:link);
 begin ①填空 end;
 proc ins(var p:link; I:integer; e:elemtype);
 var j:integer; q,s:link;
 begin q:=p^.next; j:=0;
 while (qp) and (j
 [q:=q^.next;j:=j+1]
 if ②填空 then exit(error);
 new(s); s^.key=e;
 s^.next:=q^.next; q^.next:=s; /*维护*/
 ③填空
 end;
 proc del(var p:link; I:integer; var e:elemtype);
 var j:integer;q,s:link;
 begin q:=p^.next; j:=0;
 while (qp) and (j
 [q:=p^.next; j:=j+1];
 if ④填空 then exit(error);
 s:=q^.next; q^.next=s^.next; e:=s^.key; ⑤填空; /*维护*/
 dispose(s)
 end;
 func find(p:link; e:elemtype):integer:
 q:link; I:integer;
 begin q:=p^.next; ⑥填空;
 q:=q^.next; I:=1;
 while ⑦填空 do
 [q:=q^.next; I:=I+1];
 if (q=p^.next) then return (0)
 else return(i)
 end; /*循环条件中只有一次比较*/
 北京工业大学2001年研究生入学考试试题答案
 一.单选/多选和填空题,每空2分,共20分
 1.〈1〉B 〈2〉1比3先进栈,应后出栈。 A= 1, 1, 1, ^
 2.〈3〉BD
 3.〈4〉C 〈5〉BDE 0,a 1, 1, ^^ 1, ^
 4.〈6〉A
 5.〈7〉2*(n-1)〈8〉n*(n-1) 〈9〉n 0,b 1,^ 1, ^
 6.〈10〉任意多
 二.简答题25分
 1.(5分)
 用I,j表示k: k=(n+n-I-2)(I-1)/2+j-I=(2n-I)(I-1)/2+j。
 2.(5分) c=head(tail(head(head(tail(tail(A))))))
 3.(5分)取任意两个叶结点u,v,它们同属于一棵二叉树,必有共同祖先,记其中最近的为w,u,v不会是w,若是就不可能为叶子;故u,v 分属w的左右子树,设u在左,则按定义,在三种遍历序列中,u都在v前面。由u,v的任意性可知,所有叶子结点的先后关系都是相同的。
 4.(4分)哈希表中不成功的平均查找长度概念和求法指:从每个可能的哈希地址开始按算法约定的探测方法试探,直至找到空闲单元为止,其间进行比较的次数即为该地址的不成功查找长度。所有可能的哈希地址的不成功查找长度的平均值,就是哈希表的不成功平均查找长度(2分)。不成功查找对应的关键字可能是无穷的,但映射到每个哈希地址都是可能的,因此,在没有先验知识的情况下,认为它们映射到每个哈希地址的概率相等是合理的假设(2分)。
 5.(6分)
 ① 48 48 12
 / / /
 70 65 24 12 24 43
 / / / / / /
 33 24 56 12 33 70 56 65 33 70 56 65
 / / /
 92 92 92
 ② *48 65 *65 48
 / / /
 70 *43 70 33 70 *33 65
 / / / / /
 65 33 24 48 24 56 70
 / /
 24 56 12
 48
 /
 24 65
 / /
 12 33 56 70
 
 92
 三.程序填空,每空3分,共21分
 C语言
 ①p=(link)malloc(sizeof(node));
 p->next=p;
 ②I
 ③if(q==p) p=s;
 ④I
 ⑤if(s==p) p=q;
 ⑥q->key=e;
 ⑦q->key!=e
 类PASCAL语言
 ①new(p); p^.next:=p;
 ②(I
 ③if(q=p) then p:=s;
 ④(I
 ⑤⑥if(s=p) then p:=q;
 ⑥q^.key:=e;
 ⑦q^.keye
 四.程序将单链表逆置(4分),存入一个带头结点,用尾指针表示的单向循环链表(2分)。
 算法时间复杂度为0(n),每递归调用一层即进入下一结点,调用深度与表的相当,退出时
 处理插入,每层复杂度为0(1),故总的复杂度为0(n)。(2分)
 五.(10分) C语言
 ypedef char elemtype;
 type def struct node{
 elemtype key;
 struct node *f,*b;/*f为孩子指针*/
 }node,link;
 link t;
 pp(link p){
 if (!p) return 0;
 if(!pàb) {
 printf(“%c”,pàkey);
 return pp(pàf)+1;
 }
 else return pp(pàf)+pp(pàb);
 }
 main(){
 int j;
 建根指针t指出的森林的二叉树表示;
 j=pp(t);
 printf(“nNumj=%dn”,j);
 }
 类PASCAL语言
 program ppp;
 type elemtype=char;
 link=^node;
 node=record
 key:elemtype;
 f,b:link;
 end;
 var t:=link; j:=integer;
 func pp(p:link):integer;
 begin If p=nil then return(0)
 if p^.b=nil then write (p^.key);
 return (pp(p^.f)+1)
 else return (pp(p^.f)+pp(p^.b))
 end;
 begin
 建根指针t指出的森林的二叉树表示;
 j:=pp(T);
 writeln;writerln(‘Num=’,j)
 end.
 评分标准:结构定义2分,统计兄弟指针为空2分,递归算法(公共变量-过程亦可)4分,正确输出2分
 六.(16分)根据右表给出的顶点数,边数,顶点信息,弧的信息 9 11(边,权)按在链头插入的算法: ABCDEFGHI
 1. (6分)画出AOE网的邻接表结构图,并用类C(或类PASCAL) AB 3
 描述类型。 AD 2
 2. (4分)按结构图和求关键路径的算法写出顶点的拓扑排序序列, AE 4
 估算拓扑排序算法的时间复杂度。 BC 1
 3. (6分)求出各弧代表的活动的最早开始时间和最迟开始时间,指 DC 3
 出关键活动。 EH 2
 1. 0 Aà 4,4 à 3,2 à 1,3 ^ CF 1
 1 B à2,1 ^ CG 3
 2 C à 6,3 à 5,1 ^ HG 2
 3 Dà 2,3 ^ FI 5
 4 Eà 7,2 ^ GI 4
 5 F à 8,5^
 6 Gà 8,4 ^ 邻接表结构图
 7 H à 6,2^
 8 I ^
 2.ABDCFEHGI o(e+n)
 3. e ee el mark
 AB 0 1
 AD 0 0 *
 AE 0 0 *
 BC 3 4
 DC 2 2 *
 EH 4 4 *
 CF 5 6
 CG 5 5 *
 HG 6 6 *
 FI 6 7
 GI 8 8 *
 六.1类型定义
 C语言
 #define maxvnum 20
 typedef struct arctype {
 int headnum,cost;
 struct arctype *next;
 }arctype,*link;
 typedef struct {
 elemtype key;
 link firsttout;
 }vextype;
 typedef struct {
 vextype vex[maxvnum];
 int vexnum,arcnum;
 }adjlist;
 类PASCAL语言
 const maxvnum=20;
 type
 link=^arctype;
 arctype=record
 headnum,cost: integer;
 next: link
 end;
 vextype=record
 key: elemtype;
 firsttout: link
 end;
 adjlist=record
 vex: array[1..macvnum] of vextype;
 vexnum,arcnum: integer
 end;
 四.(8分)阅读下面的程序,指出过程pp完成的功能几结果数据结构的名称,并估计算法的时间复杂度0(?),说明理由。设单链表长度为n。
 C语言
 Typedef char elemtype;
 Typedef struct node{
 Elemtype key;
 Strcut node *next;
 }node,*link;
 link la ;
 void pp(link p) {
 if (p) {
 pp(p->next); p->next=la->next;
 la->next=p;la=p;
 } return;
 }
 main () {
 link q;
 建立用la指出的带头结点的单链表;
 q=la->next; la->next=la; pp(q);
 输出用la指出的链式结构的数据元素;
 return 1;
 }
 类PASCAL语言
 Program ppp;
 Tyoe elemtype=char;
 Link=^node;
 Node=record
 Key:elemtype;
 Next:link;
 End;
 Var la,q:link;
 Proc pp(p:link);
 Begin
 If (pnil) then
 Begin pp(p^.next);
 P^.next:=la^.next;
 La^.next:=p; la:=p
 End
 End;
 Begin
 建立用la指出的带头结点的单链表;
 q:=la^.next; la^.next:=la; pp(q);
 输出用la指出的链式结构的数据元素;
 end.
 五.(10分)编程打印出用孩子兄弟链表表示的森林中最小兄弟(无弟弟者) 结点并统计输出其个数。设结点数据域为字符(字母),要求描述所用结构。
 六.(16分)根据右表给出的顶点数,顶点信息,弧的信息按在链头插入的算法:
 1.(6分)画出AOE网的邻接表结构图,并用类C(或用类pascal)描述类型。
 2.(4分)按结构图和求关键路径的算法(!!)写出顶点的拓扑排序序列,
 估计拓扑排序算法的复杂度。
 3.(6分)求出各弧代表的活动的最早开始时间和最迟开始时间,指出关键活动。
 9 11
 ABCDEFGHI
 AB 3
 AD 2
 AE 4
 BC 1
 DC 3
 EH 2
 CF 1
 CG 3
 HG 2
 FI 5
 GI 4
 上面是北京工业大学2001年考研专业课 计算机的计算机组成原理真题,望考生通过做真题,考生能够发现自己的知识漏洞,及时的补充和纠正,争取精确、深度的把握专业课知识,打好专业课的基础。最后,都希望大家考研成功,加油!
 更多考研专业课信息关注 文都教育
 | 
 |