厦门大学计算机专业考研真题,厦门大学2002年考研真题-计算机数据结构

2002 数据结构和高级程序设计(厦门大学)

一、16分

1、PROGRAM g0101 ( output );

var a,b :integer ;

FUNCTION fc( x : integer ) : integer ;

begin a:=b+x ; x=b-x ; fc:=a*x ; end ;

FUNCTION fp ( VAR y :integer ) : integer ;

begin y:=b+y ;fp=y-a ; end ;

begin

a=2; b=3;

writeln('fc=' , fc(a) , ' fp= ' ,fp(b) ) ;

writeln( 'a=' ,a , 'b=' b )

end;

2、PROGRAM g0102 (output );

var a,b,c:integer ;

begin

new(a); a^:=3; new(b); b^5:=5 ;

a^:=a^+b^ ; c:=a;

c^:=a^*b^; b^:=a^-c^ ;

writeln( 'a=',a^,'b=b',b^,'c=',c^ );

end;

3、PROGRAM g0103 (output) ;

const a=3 ; b=4 ;c=7 ;

var

x:=array[1..a] of integer ;

y:=array[1..b] of integer ;

z:=array[1..c] of integer ;

i,j,k,h:integer ;

PROCEDURE ssar ;

var i,j,k:integer ; w:array[1..a]of integer ;

begin

for i:=1 to a do w[i]:=x[a+1-i];

i:=1 ;j:=1;k:=1;

while (i<=a) and (j<=b) do

begin

if w[i] > y[i] then begin h:=w[i] ; i=i+1; end

else begin h:=y[i] ; j:=j+1 ;end;

z[k]:=h ; k:=k+1 ;

end ;

while i<=a do begin z[k]:=w[i] ;k:=k+1; i:=i+1 end;

while j<=b do begin z[k]:=y[i] ;k:=k+1; j:=j+1 end;

end;

begin

for i:=1 to a do x[i]:=i*2 ;

for j:=1 to b do y[i]:=c-j ;

ssar ;

for i:=1 to c do write(z[i],''); writeln;

end ;

4 PROGRAM g0104 (output);

var a,b,c:integer;

FUNCTION fg(x:integer ;var y,z:integer):integer ;

begin z:=x*2; x:=z+1 ; y:=x+z ; fg :=y-1 ; end

begin

a:=1 ;b:=2;c:=1;

writeln('fg=',fg(fg(a,b,c),b,c)) ;

writeln('a=',a,'b=',b,'c=',c) ;

end;

二、12分已知双连表中节点类型如下

Type

dpoint = ^list ;

list =RECORD

data:integer;

left ,right : dpointer ;

end ;

如下过程将在双连表第i个节点(i>=0)之后插入一个元素,为x的结点,请在答案栏给出题目中______处应该添入的语句或表达式,使之完成上述功能。

PROCEDURE insert ( var head :dpointer ;i,x:integer);

var s,p:dpointer ;

j:integer;

begin

new(s) ;s^data:=x;

if (i=0) then { 如果i=0,则将s结点插入到表头后返回}

begin s^.right=head ;____1_____ head:=s ; end

else

begin

p:=head; ____2____ {在双连表中查找第i 个节点,由p所指向}

while ((p<>nil) and (j

begin j:=j+1 ; _____3______ end ;

if(p<>nil) then

if (p^.right=nil) then

begin p^.right:=s ; s^.right:=nil ; ____4___ end;

else

begin s^.right:=p^.right ; ___5____

p^.right:=s; ____6_____ end

else

writeln('can not find node ');

end;

end;

三、12分广义表是n(n>=0)个数据元素,a1,a2,……an的有限序列,

其中ai(1<=i<=n)或者是单个数据元素(原子),或仍然是一个广义表,广义表的结点具有不同的结构,即原子结点和子表结点,为了将两者统一,link域指向下一个结点,当其tag为1时表示是子结点,其sublist为指向子表的指针。因此,广义表可采用如下结构存储:

type

glist=^gnode ;

gonde=RECORD

link:glist;

case tag:0..1 of

0data:char);

1sublist:glist);

end;

1、画出广义表((a,b),c)的存储结构;

2、写出计算一个广义表的原子结构个数的递归算法表示式;

3、编写实现上述算法的过程或函数程序。

四、10分写一个算法,利用[0。。1]上的随即函数计算圆周率n的近似值,首先说明你的算法,而后编写相应的过程或函数程序。

五、选择踢 (8分)

1、下列排序算法中,在每一趟都能选出一个元素放到其最终位置上,并且其时间性能受数据特性的影响的是________.

a 直接插入排序  b 快速排序  c 直接选择排序   d 堆排序

2、下列排序算法中,占用辅助空间最多是_______

a 归并排序   b 快速排序  c 希尔排序  d 堆排序

六、填空20分

1、一棵左子树为空的二叉数在先序线索化后,其中的空链域的个数为______

2、若以{4、5、6、7、8}做为叶子节点的权值构造哈夫曼树,则其带权路径长度是________

3、在顺序存储的二叉树中,编号为i和j的两个结点处在同一层的条件是_______

剩下的省略…………

填空还有2题,都是基本题,七是作图题12分,给你一些中序、先序、后序的字母,让你画出,完整的二叉树。(给你的三个序列都是不完整的)

八是解答题10分,一道是给你一个图,要你找到,顶点1到其余各点的最短路径

还有一个二叉树的题目。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值