数据结构试卷(六)参考答案
一、选择题 1.D 2.A 3.A 4.A 6.D
7.B
8.A
9.C
11.C 12.A 13.B 14.D 15.B
二、判断题
1.错 2.对 3.对 4.对 5.错 6.错 7.对 8.错 9.对 10.对
三、填空题
1. O(n)
2. s->next=p->next; p->next=s 3. (1,3,2,4,5) 4. n-1 5. 129 6. F==R
7. p->lchild==0&&p->rchild==0 8.
O(n2)
9. O(nlog2n), O(n) 10. 开放定址法,链地址法
四、算法设计题
1. 设计在顺序有序表中实现二分查找的算法。struct record {int key; int others;}; int bisearch(struct record r[ ], int k) {
49
5.D 10.B
int low=0,mid,high=n-1; while(low<=high) {
mid=(low+high)/2;
if(r[mid].key==k) return(mid+1); else if(r[mid].key>k) high=mid-1; else low=mid+1;
}
return(0); } 2. 设计判断二叉树是否为二叉排序树的算法。
int minnum=-32768,flag=1;
typedef struct node{int key; struct node *lchild,*rchild;}bitree; void inorder(bitree *bt) { if (bt!=0) {inorder(bt->lchild); if(minnum>bt->key)flag=0; minnum=bt->key;inorder(bt->rchild);} }
3. 在链式存储结构上设计直接插入排序算法
void straightinsertsort(lklist *&head) {
lklist *s,*p,*q; int t;
if (head==0 || head->next==0) return;
else for(q=head,p=head->next;p!=0;p=q->next) {
for(s=head;s!=q->next;s=s->next) if (s->data>p->data) break; if(s==q->next)q=p;
else{q->next=p->next; p->next=s->next;
t=p->data;p->data=s->data;s->data=t;}
} }
s->next=p;
50
数据结构试卷(七)参考答案
一、选择题 1.B 2.B 3.C 4.B 6.A
7.C
8.C
9.B
二、判断题 1.对 2.对 3.对 4.对 6.对 7.对
8.错
9.错
三、填空题
1. s->left=p,p->right 2. n(n-1),n(n-1)/2 3. n/2
4. 开放定址法,链地址法 5. 14 6. 2h-1,2h-1
7. (12,24,35,27,18,26) 8. (12,18,24,27,35,26) 9. 5
10. i 四、算法设计题 1. 设计在链式结构上实现简单选择排序算法。void simpleselectsorlklist(lklist *&head) 51 5.B 10.D 5.对 10.错 { lklist *p,*q,*s; int min,t; if(head==0 ||head->next==0) return; for(q=head; q!=0;q=q->next) { min=q->data; s=q; for(p=q->next; p!=0;p=p->next) if(min>p->data){min=p->data; s=p;} if(s!=q){t=s->data; s->data=q->data; q->data=t;} } } 2. 设计在顺序存储结构上实现求子串算法。 void substring(char s[ ], long start, long count, char t[ ]) { long i,j,length=strlen(s); if (start<1 || start>length) printf(\ else if (start+count-1>length) printf(\else { for(i=start-1,j=0; i 3. 设计求结点在二叉排序树中层次的算法。 int lev=0; typedef struct node{int key; struct node *lchild,*rchild;}bitree; void level(bitree *bt,int x) { if (bt!=0) {lev++; if (bt->key==x) return; else if (bt->key>x) level(bt->lchild,x); else level(bt->rchild,x);} } 数据结构试卷(八)参考答案 一、选择题 1.C 6.C 2.C 7.B 3.C 8.C 4.B 9.A 5.B 10.A 52
相关推荐: