77范文网 - 专业文章范例文档资料分享平台

2015广工数据结构答案

来源:网络收集 时间:2018-11-21 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

/**********

【题目】试写一算法,如果三个整数a,b和c的值 不是依次非递增的,则通过交换,令其为非递增。 ***********/

void Descend(int &a, int &b, int &c) /* 通过交换,令 a >= b >= c */ { int t;

if(a<=b){t=a;a=b;b=t;} if(b<=c){t=b;b=c;c=t;} if(a<=b){t=a;a=b;b=t;} }

/**********

【题目】试编写算法求一元多项式 P(x) = a0 + a1x + a2x^2 + ... + anx^n

的值P(x0),并确定算法中每一语句的执行次数和整个算法 的时间复杂度。 **********/

float Polynomial(int n, int a[], float x)

/* 求一元多项式的值P(x)。 */ /* 数组a的元素a[i]为i次项的系数,i=0,...,n */ { int i,j;float p=0,t=1; for(i=0;i<=n;i++) {

p=a[i]*t+p; t=t*x ; } return p; }

/**********

【题目】已知k阶裴波那契序列的定义为 f(0)=0, f(1)=0, ..., f(k-2)=0, f(k-1)=1; f(n)=f(n-1)+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 */ { int t[60],sum,i,j;

if(k<2||m<0) return ERROR; if(m

else if(m==k-1) f=1; else

{for(i=0;i<=k-2;i++) t[i]=0; t[k-1]=1;

for(i=k;i<=m;i++) { sum=0;

for(j=i-k;j<=i;j++)

sum+=t[j]; t[i]=sum; } f=t[m]; }

return OK; }

/**********

【题目】试编写算法,计算i!×2^i的值并存入数组 a[0..n-1]的第i-1个分量中 (i=1,2,…,n)。假设计

算机中允许的整数最大值为MAXINT,则当对某个k (1≤k≤n)使k!×2^k>MAXINT时,应按出错处理。注意 选择你认为较好的出错处理方法。 **********/

Status Series(int a[], int n)

/* 求i!*2^i序列的值并依次存入长度为n的数组a; */ /* 若所有值均不超过MAXINT,则返回OK,否则OVERFLOW */ { int last=1; int i;

for(i=1;i<=n;i++) {a[i-1]=last*2*i; if(a[i-1]>MAXINT) return OVERFLOW; last=a[i-1]; } return OK; }

/**********

【题目】假设有A、B、C、D、E五个高等院校进行田径对抗赛, 各院校的单项成绩均以存入计算机并构成一张表,表中每一行 的形式为:

项目名称 性别 校名 成绩 得分

编写算法,处理上述表格,以统计各院校的男、女总分和团体 总分,并输出。 **********/

void Scores(ResultType *result, ScoreType *score)

/* 求各校的男、女总分和团体总分, 并依次存入数组score */ /* 假设比赛结果已经储存在result[ ]数组中, */ /* 并以特殊记录 {\(域scorce=0)*/

/* 表示结束 */ { int i=0;

while(result[i].sport!=NULL)

{ switch(result[i].schoolname) /*使用switch语句记录各院校的成绩*/

{

case 'A': score[0].totalscore+=result[i].score; if(result[i].gender==male)

score[0].malescore+=result[i].score; else

score[0].femalescore+=result[i].score; break; case 'B': score[1].totalscore+=result[i].score; if(result[i].gender==male)

score[1].malescore+=result[i].score; else

score[1].femalescore+=result[i].score; break; case 'C': score[2].totalscore+=result[i].score; if(result[i].gender==male)

score[2].malescore+=result[i].score; else

score[2].femalescore+=result[i].score; break; case 'D': score[3].totalscore+=result[i].score; if(result[i].gender==male)

score[3].malescore+=result[i].score; else

score[3].femalescore+=result[i].score; break; case 'E': score[4].totalscore+=result[i].score; if(result[i].gender==male)

score[4].malescore+=result[i].score; else

score[4].femalescore+=result[i].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(i<0) return ERROR;

if(S.length

} 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 */ { int i;

S.elem=(ElemType*)malloc(n*sizeof(ElemType)); if(S.elem==NULL) return ERROR; S.length=n;

if(n<=0) return ERROR; for(i=0;i

/**********

【题目】链表的结点和指针类型定义如下 typedef struct LNode { ElemType data; struct LNode *next; } LNode, *LinkList;

试写一函数,构建一个值为x的结点。 ***********/

LinkList MakeNode(ElemType x)

/* 构建一个值为x的结点,并返回其指针。*/ /* 若构建失败,则返回NULL。 */ { LNode a;

LNode *p=&a;

if(p==NULL) return NULL; a.data=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 a,b; LNode *p1=&a; LNode *p2=&b;

if(p1==NULL||p2==NULL) return NULL; a.data=x; b.data=y; a.next=p2; return p1; }

/**********

【题目】链表的结点和指针类型定义如下 typedef struct LNode { ElemType data; struct LNode *next; } LNode, *LinkList;

试写一函数,构建长度为2的升序链表,两个结点的值 分别为x和y,但应小的在前,大的在后。 **********/

LinkList CreateOrdLList(ElemType x, ElemType y) /* 构建长度为2的升序链表。 */ /* 若构建失败,则返回NULL。 */ { LNode a,b; LNode *p1=&a; LNode *p2=&b;

if(p1==NULL||p2==NULL) return NULL; if(x

{a.data=y; b.data=x;} a.next=p2; return p1;

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库2015广工数据结构答案在线全文阅读。

2015广工数据结构答案.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/294758.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: