6.A 7.B 8.A 9.C 10.A
二、填空题
1. 1.??????? O(n),O(nlog2n)
2
2. 2.??????? p>llink->rlink=p->rlink; p->rlink->llink=p->rlink
3. 3.??????? 3
4. 4.??????? 2k-1
5. 5.??????? n/2
6. 6.??????? 50,51
7. 7.??????? m-1,(R-F+M)%M
8. 8.??????? n+1-i,n-i
9. 9.??????? (19,18,16,20,30,22)
10. 10.???? (16,18,19,20,32,22)
11. 11.???? A[i][j]=1
12. 12.???? 等于
13. 13.???? BDCA
14. 14.???? hashtable[i]=0,hashtable[k]=s
三、算法设计题
1. 1.?????? 设单链表中有仅三类字符的数据元素(大写字母、数字和其它字符),
要求利用原单链表中结点空间设计出三个单链表的算法,使每个单链表只包含同类字符。
typedef char datatype;
typedef struct node {datatype data; struct node *next;}lklist;
void split(lklist *head,lklist *&ha,lklist *&hb,lklist *&hc)
{
lklist *p; ha=0,hb=0,hc=0;
for(p=head;p!=0;p=head)
{
head=p->next; p->next=0;
if (p->data>='A' && p->data<='Z') {p->next=ha; ha=p;}
else if (p->data>='0' && p->data<='9') {p->next=hb; hb=p;} else {p->next=hc; hc=p;}
}
}
2. 2.??????? 设计在链式存储结构上交换二叉树中所有结点左右子树的算法。
typedef struct node {int data; struct node *lchild,*rchild;} bitree;
void swapbitree(bitree *bt)
{
bitree *p;
if(bt==0) return;
swapbitree(bt->lchild); swapbitree(bt->rchild);
p=bt->lchild; bt->lchild=bt->rchild; bt->rchild=p;
}
3. 3.?????? 在链式存储结构上建立一棵二叉排序树。
#define n 10
typedef struct node{int key; struct node *lchild,*rchild;}bitree;
void bstinsert(bitree *&bt,int key)
{
if (bt==0){bt=(bitree *)malloc(sizeof(bitree)); bt->key=key;bt->lchild=bt->rchild=0;}
else if (bt->key>key) bstinsert(bt->lchild,key); else bstinsert(bt->rchild,key);
}
void createbsttree(bitree *&bt)
{
int i;
for(i=1;i<=n;i++) bstinsert(bt,random(100));
}
数据结构试卷(五)
一、选择题(30分)
1.数据的最小单位是( )。
(A) 数据项 (B) 数据类型 (C) 数据元素 (D) 数据变量
相关推荐: