2011广东工业大学数据结构试题B答案

2011广东工业大学数据结构试题B答案
2011广东工业大学数据结构试题B答案

数据结构(B)卷答案

一、选择题(10分,每题1分)

ACBCD BACCD

二、填空题(10分,每空1分)

1、存储结构

2、(n-1)/2

6、103

7、广度

三、解答题(共36分)

1、(7分)3、SSXSXX

8、叶子结点

4、2

9、选择排序

5、3

10、直接存取

(1)A的第6列和第4行共占(8+9-1)*5=80个字节

(2)元素A[6][4]的起始地址与A按列存放时A[2][7]的起始地址一致。

因为如果按行存储,元素A[6][4]的存储位置为6*9+4=58,

同理如果按列存储,元素A[2][7]的存储位置也为7*8+2=58

2、(7分)(3分)(4分)

0 1 2 3 4A∧

B

C

D

E

4

1

3

4

5

1

3642∧

3、(7分)

A

B C D

E F G

4、(7分)

0123456

632938

7124

5、(8分)

(1)不是大顶堆,调整后的大顶堆序列:

52

908,653,897,503,462,170,512,275,61,87(2)输出908后,调整后的大顶堆序列:

897,653,512,503,462,170,87,275,61(908)

四、算法题(36分,每题6分)

1、(1)len++(2分)

(2)p=p->next(2分)

(3)return len(2分)

2、(1)Q=(5,3,1);(3分)(2)保留队列中的奇数,并实现队列的逆置。(3分)

3、(1)(3分)(4分)(4分)

B

D

G A

C

E

F

(2)如果结点没有右孩子但有左孩子,就将其左孩子改变为右孩子(3分)

4、(1)G.v[i].vertex==v;(2分)

(2)p=G.v[i].firstArc(2分)

(3)p=p->nextArc(2分)

5、(1)r[j].key>=x.key(2分)

(2)r[i]=r[j](2分)

(3)r[i]=x(2分)

6、(1)T=p(2分)

(2)parent->left=p(2分)

(3)parent->right=p(2分)

五、算法设计题(8分)8

float f(LinkList L) LinkList p,q;

int k=0,c=0;

p=L->next;

while(p){

k++;

c++;

q=p->next;{(函数头

(初始化

(外循环

1分)

1分)

3分)

while(q

c++;

&&q->data==p->data){(内循环2分)

}

q=q->next;

}

p=q;

if(k==0)return0;

}

else return(float)c/k;(返回值1分)

六、附加题(10分,二选一,多做只按第一题给分)

1.参考答案

int fe1(LinkList L,CodeType c,int m){ LinkList p,q,s;

p=L;

q=p->next;

while(q!=L&&c>q->code){

p=q;

q=q->next;

}

if(q!=L&&q->code==c){

q->num+=m;

return0;

}else{

p->next=(LinkList)malloc(sizeof(Node));

p=p->next;

p->code=c;

p->num=m;

p->next=q;

return1;

}(1分) (1分)

(2分) (2分) (4分)

}

2.参考答案

Status fe2(BiTree T){(1分) if(!T)return TRUE;(1分) if((!T->lchild&&T->rchild)||(2分) (T->lchild&&!T->rchild))(2分)

}

return

else

return

FALSE;

fe2(T->lchild)&&fe2(T->rchild);

(1分)

(3分)

相关主题
相关文档
最新文档