|
发表于 2016-7-9 11:26:11
|
显示全部楼层
一、选择题
1.B 2.B 3.A 4.A 5.A
6.B 7.D 8.C 9.B 10.D
第3小题分析:首先用指针变量q指向结点A的后继结点B,然后将结点B的值复制到结点A中,最后删除结点B。
第9小题分析:9快速排序、归并排序和插入排序必须等到整个排序结束后才能够求出最小的10个数,而堆排序只需要在初始堆的基础上再进行10次筛选即可,每次筛选的时间复杂度为O(log2n)。
二、填空题
1. 1. 顺序存储结构、链式存储结构
2. 2. 9,501
3. 3. 5
4. 4. 出度,入度
5. 5. 0
6. 6. e=d
7. 7. 中序
8. 8. 7
9. 9. O(1)
10. 10. i/2,2i+1
11. 11. (5,16,71,23,72,94,73)
12. 12. (1,4,3,2)
13. 13. j+1,hashtable[j].key==k
14. 14. return(t),t=t->rchild
第8小题分析:二分查找的过程可以用一棵二叉树来描述,该二叉树称为二叉判定树。在有序表上进行二分查找时的查找长度不超过二叉判定树的高度1+log2n。
三、算法设计题
1. 1. 设计在单链表中删除值相同的多余结点的算法。
typedef int datatype;
typedef struct node {datatype data; struct node *next;}lklist;
void delredundant(lklist *&head)
{
lklist *p,*q,*s;
for(p=head;p!=0;p=p->next)
{
for(q=p->next,s=q;q!=0; )
if (q->data==p->data) {s->next=q->next; free(q);q=s->next;}
else {s=q,q=q->next;}
}
}
2. 2. 设计一个求结点x在二叉树中的双亲结点算法。
typedef struct node {datatype data; struct node *lchild,*rchild;} bitree;
bitree *q[20]; int r=0,f=0,flag=0;
void preorder(bitree *bt, char x)
{
if (bt!=0 && flag==0)
if (bt->data==x) { flag=1; return;}
else {r=(r+1)% 20; q[r]=bt; preorder(bt->lchild,x); preorder(bt->rchild,x); }
}
void parent(bitree *bt,char x)
{
int i;
preorder(bt,x);
for(i=f+1; ilchild->data==x || q->rchild->data) break;
if (flag==0) printf("not found xn");
else if (idata); else printf("not parent");
}
以上就是为大家整理的计算机数据结构测试题及参考答案,希望能够帮助大家更好的备考,祝大家能够取得好成绩!
点击查看跨考教育2015年考研大纲解析 |
|