ImageVerifierCode 换一换
格式:DOCX , 页数:51 ,大小:28.82KB ,
资源ID:4790435      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4790435.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(广工AnyView数据结构 第15章答案.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

广工AnyView数据结构 第15章答案.docx

1、广工AnyView数据结构 第15章答案/*【题目】试写一算法,如果三个整数a,b和c的值不是依次非递增的,则通过交换,令其为非递增。*/void Descend(int &a, int &b, int &c)/* 通过交换,令 a = b = c */ if(c=b&b=a) return; else if(ab) swap(a,b); if(ac) swap(a,c); if(bc) swap(b,c); void swap(int &a,int &b) int temp; temp=a; a=b; b=a;/*【题目】试编写算法求一元多项式 P(x) = a0 + a1x + a2x2

2、+ . + anxn的值P(x0),并确定算法中每一语句的执行次数和整个算法的时间复杂度。*/float Polynomial(int n, int a, float x)/* 求一元多项式的值P(x)。 */* 数组a的元素ai为i次项的系数,i=0,.,n */ float answer =a0; float temp= 1.0; for(int i=1;i=n;i+) temp*=x; answer+=ai*temp; return answer;/*【题目】已知k阶裴波那契序列的定义为 f(0)=0, f(1)=0, ., f(k-2)=0, f(k-1)=1; f(n)=f(n-1)

3、+f(n-2)+.+f(n-k), n=k,k+1,.试编写求k阶裴波那契序列的第m项值的函数算法,k和m均以值调用的形式在函数参数表中出现。*/Status Fibonacci(int k, int m, int &f) /* 求k阶斐波那契序列的第m项的值f */ if(k=1|m0) return ERROR; else if(m=k-1) f=1; else if(m=0) f=0; else int i,j,sum; int *t; t=(int*)malloc(m*sizeof(int); for(i=0;i=k-2;i+) ti=0; tk-1=1; for(i=k;i=m;i+

4、) sum=0; for(j=i-k;jMAXINT时,应按出错处理。注意选择你认为较好的出错处理方法。*/Status Series(int a, int n) /* 求i!*2i序列的值并依次存入长度为n的数组a; */* 若所有值均不超过MAXINT,则返回OK,否则OVERFLOW */ int t=1,p=1; for(int i=1;iMAXINT) return ERROR; return OK;/*【题目】假设有A、B、C、D、E五个高等院校进行田径对抗赛,各院校的单项成绩均以存入计算机并构成一张表,表中每一行的形式为: 项目名称 性别 校名 成绩 得分编写算法,处理上述表格,

5、以统计各院校的男、女总分和团体总分,并输出。*/void Scores(ResultType *result, ScoreType *score)/* 求各校的男、女总分和团体总分, 并依次存入数组score */* 假设比赛结果已经储存在result 数组中, */* 并以特殊记录 , male, , , 0 (域scorce=0)*/* 表示结束 */ int i=0; while(resulti.sport!=NULL) switch(resulti.schoolname) case A: score0.totalscore+=resulti.score; if(resulti.gend

6、er=male) score0.malescore+=resulti.score; else score0.femalescore+=resulti.score; break;case B: score1.totalscore+=resulti.score; if(resulti.gender=male) score1.malescore+=resulti.score; else score1.femalescore+=resulti.score; break;case C: score2.totalscore+=resulti.score; if(resulti.gender=male) s

7、core2.malescore+=resulti.score; else score2.femalescore+=resulti.score; break;case D: score3.totalscore+=resulti.score; if(resulti.gender=male) score3.malescore+=resulti.score; else score3.femalescore+=resulti.score; break;case E: score4.totalscore+=resulti.score; if(resulti.gender=male) score4.male

8、score+=resulti.score; else score4.femalescore+=resulti.score; break; i+;/*【题目】试写一算法,对序列S的第i个元素赋以值e。序列的类型定义为:typedef struct ElemType *elem; int length; Sequence;*/Status Assign(Sequence &S, int i, ElemType e) /* 对序列S的第i个元素赋以值e,并返回OK。 */* 若S或i不合法,则赋值失败,返回ERROR */ if(S.lengthS.length) return ERROR; els

9、e S.elemi=e; return OK; /*【题目】试写一算法,由长度为n的一维数组a构建一个序列S。序列的类型定义为:typedef struct ElemType *elem; int length; Sequence;*/Status CreateSequence(Sequence &S, int n, ElemType *a) /* 由长度为n的一维数组a构建一个序列S,并返回OK。 */* 若构建失败,则返回ERROR */ if(n1) return ERROR; else S.elem=(ElemType*)malloc(n*sizeof(ElemType); S.ele

10、m0=a0; for(int i=1;idata=x; return p;/*【题目】链表的结点和指针类型定义如下 typedef struct LNode ElemType data; struct LNode *next; LNode, *LinkList;试写一函数,构建长度为2且两个结点的值依次为x和y的链表。*/LinkList CreateLinkList(ElemType x, ElemType y) /* 构建其两个结点的值依次为x和y的链表。*/* 若构建失败,则返回NULL。 */ LNode * p; p=(LNode*)malloc(sizeof(LNode); if(

11、p=NULL) return NULL; else p-next=(LNode*)malloc(sizeof(LNode); if(p-next=NULL) return NULL; p-data=x; p-next-data=y; p-next-next=NULL; return p; /*【题目】链表的结点和指针类型定义如下 typedef struct LNode ElemType data; struct LNode *next; LNode, *LinkList;试写一函数,构建长度为2的升序链表,两个结点的值分别为x和y,但应小的在前,大的在后。*/LinkList CreateO

12、rdLList(ElemType x, ElemType y)/* 构建长度为2的升序链表。 */* 若构建失败,则返回NULL。 */ LNode * p; p=(LNode*)malloc(sizeof(LNode); if(p=NULL) return NULL; else p-next=(LNode*)malloc(sizeof(LNode); if(p-next=NULL) return NULL; p-data=(xnext-data=(xy)?x:y; p-next-next=NULL; return p;/*【题目】试写一算法,实现顺序栈的判空操作StackEmpty_Sq(S

13、qStack S)。顺序栈的类型定义为:typedef struct ElemType *elem; / 存储空间的基址 int top; / 栈顶元素的下一个位置,简称栈顶位标 int size; / 当前分配的存储容量 int increment; / 扩容时,增加的存储容量 SqStack; / 顺序栈*/Status StackEmpty_Sq(SqStack S)/* 对顺序栈S判空。 */ /* 若S是空栈,则返回TRUE;否则返回FALSE */ if(S.top=0) return TRUE; return FALSE;/*【题目】试写一算法,实现顺序栈的取栈顶元素操作GetT

14、op_Sq(SqStack S, ElemType &e)。顺序栈的类型定义为:typedef struct ElemType *elem; / 存储空间的基址 int top; / 栈顶元素的下一个位置,简称栈顶位标 int size; / 当前分配的存储容量 int increment; / 扩容时,增加的存储容量 SqStack; / 顺序栈*/Status GetTop_Sq(SqStack S, ElemType &e) /* 取顺序栈S的栈顶元素到e,并返回OK; */ /* 若失败,则返回ERROR。 */ if(S.top=0) return ERROR; e=S.elemS.

15、top-1; return OK;/*【题目】试写一算法,实现顺序栈的出栈操作Pop_Sq(SqStack &S, ElemType &e)。顺序栈的类型定义为:typedef struct ElemType *elem; / 存储空间的基址 int top; / 栈顶元素的下一个位置,简称栈顶位标 int size; / 当前分配的存储容量 int increment; / 扩容时,增加的存储容量 SqStack; / 顺序栈*/Status Pop_Sq(SqStack &S, ElemType &e) /* 顺序栈S的栈顶元素出栈到e,并返回OK;*/ /* 若失败,则返回ERROR。

16、*/ if(S.top=0) return ERROR; e=S.elem-S.top; return OK;/*【题目】若顺序栈的类型重新定义如下。试编写算法,构建初始容量和扩容增量分别为size和inc的空顺序栈S。typedef struct ElemType *elem; / 存储空间的基址 ElemType *top; / 栈顶元素的下一个位置 int size; / 当前分配的存储容量 int increment; / 扩容时,增加的存储容量 SqStack2;*/Status InitStack_Sq2(SqStack2 &S, int size, int inc)/* 构建初始

17、容量和扩容增量分别为size和inc的空顺序栈S。*/ /* 若成功,则返回OK;否则返回ERROR。 */ S.elem=(ElemType*)malloc(sizeof(ElemType); if(S.elem=NULL|size=0|incS.size) p=(ElemType*)realloc(S.elem,(S.size+S.increment)*sizeof(ElemType); if(p=NULL) return ERROR; S.elem=p; S.size+=S.increment; *(S.top+)=e; return OK; /*【题目】若顺序栈的类型重新定义如下。试编

18、写算法,实现顺序栈的出栈操作。typedef struct ElemType *elem; / 存储空间的基址 ElemType *top; / 栈顶元素的下一个位置 int size; / 当前分配的存储容量 int increment; / 扩容时,增加的存储容量 SqStack2;*/Status Pop_Sq2(SqStack2 &S, ElemType &e) /* 若顺序栈S是空的,则返回ERROR; */ /* 否则将S的栈顶元素出栈到e,返回OK。*/ if(S.elem=S.top) return ERROR; e=*(-S.top); return OK;/*【题目】试写一

19、算法,借助辅助栈,复制顺序栈S1得到S2。顺序栈的类型定义为:typedef struct ElemType *elem; / 存储空间的基址 int top; / 栈顶元素的下一个位置,简称栈顶位标 int size; / 当前分配的存储容量 int increment; / 扩容时,增加的存储容量 SqStack; / 顺序栈可调用顺序栈接口中下列函数:Status InitStack_Sq(SqStack &S, int size, int inc); / 初始化顺序栈SStatus DestroyStack_Sq(SqStack &S); / 销毁顺序栈SStatus StackEmp

20、ty_Sq(SqStack S); / 栈S判空,若空则返回TRUE,否则FALSEStatus Push_Sq(SqStack &S, ElemType e); / 将元素e压入栈SStatus Pop_Sq(SqStack &S, ElemType &e); / 栈S的栈顶元素出栈到e*/Status CopyStack_Sq(SqStack S1, SqStack &S2) /* 借助辅助栈,复制顺序栈S1得到S2。 */ /* 若复制成功,则返回TRUE;否则FALSE。 */ if(StackEmpty_Sq(S1) S2.top=0; return TRUE; S2.elem=S1

21、.elem; S2.top=S1.top; return TRUE;/*【题目】试写一算法,求循环队列的长度。循环队列的类型定义为:typedef struct ElemType *base; / 存储空间的基址 int front; / 队头位标 int rear; / 队尾位标,指示队尾元素的下一位置 int maxSize; / 最大长度 SqQueue;*/int QueueLength_Sq(SqQueue Q)/* 返回队列Q中元素个数,即队列的长度。 */ if(Q.rear-Q.front0) return Q.maxSize-Q.front+Q.rear; return Q.

22、rear-Q.front;/*【题目】如果希望循环队列中的元素都能得到利用,则可设置一个标志域tag,并以tag值为0或1来区分尾指针和头指针值相同时的队列状态是空还是满。试编写与此结构相应的入队列和出队列的算法。本题的循环队列CTagQueue的类型定义如下:typedef struct ElemType elemMAXQSIZE; int tag; int front; int rear; CTagQueue;*/Status EnCQueue(CTagQueue &Q, ElemType x)/* 将元素x加入队列Q,并返回OK;*/* 若失败,则返回ERROR。 */ if(Q.fro

23、nt=Q.rear&Q.tag=1) return ERROR; if(Q.rear=0) Q.elem0=x; Q.rear+=1; else Q.elemQ.rear=x; Q.rear=(Q.rear+1)%MAXQSIZE; Q.tag=1; return OK;Status DeCQueue(CTagQueue &Q, ElemType &x)/* 将队列Q的队头元素退队到x,并返回OK;*/* 若失败,则返回ERROR。 */ if(Q.front=Q.rear&Q.tag=0) return ERROR; x=Q.elemQ.front; Q.front=(Q.front+1)%MAXQSIZE; Q.tag=0; return OK;/*【题目】假设将循环队列定义为:以域变量rear和length分别指示循环队列中队尾元素的位置和内含元素的个数。试给出此循环队列的队满条件,并写出相应的入

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1