耿国华数据结构附录A样卷习题答案及B卷习题答案(3)

2019-01-10 14:37

(2) (3) h = log2 ( n+1 ) 或 h = [ log2 n ] + 1 (方括号表示向下取整) O ( log2 ( n+1 ) ) 或 O ( log2 n )

算法题:

1. 设计一个算法,利用栈的基本运算返回指定栈中的栈底元素。 答:status Getbase(Aqstacks,int &e) {

If(s.top==s.base) Error(‘no data’) else

e =*s.base; return e; }

2. 利用一维数组A可以对N个整数进行排序,其中一种排序的算法的处理思想是:将N

个整数作为数组A的N个元素的值,每次(即第一次)从元素A[1]~A[N]中挑出最小的一个元素A[K](1<=K<=N),然后将A[K]与A[1]换位,这样反复N次完成排序,编写实现上述算法的函数? 答:SelectSort(sqlist &A) {

For(i=1;KA.length;++i); {

J=selectminkey(A,i); If(i=J)A.R[i]<-->A.R[J]; }

}//selectsort

3. 设计一个算法,利用栈的基本运算将指定栈中的内容进行逆转。 答:status Nizhuan(sqstacks, int a, int b, int t) {

If(s.top==s.base) error(‘no data’);

for(i=0;i

a=*--top; b=*s.base; t=b;b=a;a=t; s.base++; } }

4. 在栈项指针为HS的链栈中,编写算法计算该链栈中结点个数? 答:status sum(linked stack HS.elemtype N)

{

Int N=0;

While(HS!=NULL); {N++;

HS=HS->next; }

Return(N); }

5. 修改直接选择排序,每趟从无序区中选择最大元素与当前元素进行交换.? 答:selectSort (SqList &A ) { for (i =1; i< A.length; ++i) { j =SelectMaxkey(A,i ); if (i ! = j) A.r[i]<--> A.r[j]; }

}// SelectSort

6. 用不带头结点的单链表存储链栈,设计进栈和出栈的算法。 答:(1)入栈操作

【单个链栈的入栈操作】

int pushLstack(slStacktype *top,Elemtype x) {//将元素x压入链栈top中 slStacktype *p;

if((p=(slStacktype*)malloc(sizeof(slStacktype)))==NULL) return FALSE; //申请一个结点 p->data=x; p->next=top; top=p;

return TRUE; }

(2)出栈操作

【单个链栈的出栈操作】

Elemtype popLstack(slStacktype *top) {//从链栈top中删除栈顶元素 slStacktype *p; Elemtype x;

if (top= =NULL) return NULL; //空栈 p=top;

top=top->next; x=p->data; free(p); return x; }


耿国华数据结构附录A样卷习题答案及B卷习题答案(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:老师期末复习心得体会

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: