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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

李淑芬教材第3章答案级.docx

1、李淑芬教材第3章答案级*p17/1.6/4打印所有的“水仙花数”,所谓水仙花数是指一个3位数,其各位数字三次方和等于该数字本身。编写该问题的算法。*/#includevoid main() int i; int is(int number); printf(所有的水仙花数:n); for(i=99;i1000;i+) if(is(i)=1)printf(%dn,i);int is(int number) int x=number%10; int y=number/10%10; int z=number/100; if(x*x*x+y*y*y+z*z*z=number) return 1; el

2、se return 0;*p17/1.6/5一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如,6的因子为1,2,3,而6=1+2+3,因此6是“完数”。编程序找出1000以内的所有完数。*/#includeint main() int i,j,k; printf(1000以内的完数有:n); for(i=1;i1000;i+) k=0; for(j=1;jnext ) q = p-next; while (q-next) if (p-next-data = q-next-data) / 条件为真,删除重复元素 r = q-next; q-next=r-next; free(r); e

3、lse q=q-next; /while(q-next) p = p-next; 2、Void Delete_repnum(squlisttp *L, int i)/删除顺序表重复元素 int i,j,k; while(i=(*L).len) j=i+1; while(j=(*L).len) if( (*L).vecj= (*L).veci) for(k=j;k=(*L).len;k+) (*L).veck-1= (*L).veck; /*元素前移*/ (*L).len-;/*修改长度*/ else j+; i+; 作业1(ppt)Void Delete_repnum(SeqList *L,

4、int i) 删除有序顺序表中的重复元素 int i,j,k; while(i=(*L).len-1) if( (*L).veci+1= (*L).veci) for(k=i;klen-1; int t,i; if(L-len=0) return 0;/顺序表为空,直接返回 for(i=0;ilen/2;i+) t=L-datalow; L-datalow+=L-datahigh; L-datahigh-=t; 3、在线性表L中找出最大值和最小值的元素及其所在的位置。void List_Min&Max(SeqList *L) int i,pos_Min; int Max_data=L-data

5、0,Min_data=L-data0; for(i=0;iL-datai) /查找最小值及其位置 Min_data=L-datai; Pos_Min=i; if(Max_datadatai) Max_data=L-datai; Pos_Max=i; 四、应用题2、本算法的功能是将线性表的首元素移动到线性表的最后。如:(a1,a2,.,an),算法执行后,线性表变为(a2,a3,.,an,a1)。5、xsxxxsssxxsxxsxxssss3入x,3出s,*入x,-入x,y入x,y出s,- 出s,*出s,-入x,a入x,a出s,/入x,y入x,y出s,入,2入,2出,出,/ 出,- 出。6、可以

6、得到14种输出序列:abcd,abdc,acbd,acdb,adcb,bacd,bcad,bcda,bdca, badc.cbad,cbda,cdba,dcba7、9-2*4+(8+1)/3表达式前后输入#,表示开始和结束。序号运算符栈操作数栈输入字符1#92#9-3#-924#-92*5#-*9246#-*924+7#-988#19#+1(10#+(1811#+(18+12#+(+18113#+(+181)14#+19/15#+/19316#+/193#17#+1318#4五、算法设计题五(1).设单链表L是一个非递减有序表,试写一个算法将x插入其中后仍保持L的有效性I:带头结点 Int i

7、nsert(NODE *L,int x) NODE ,*s,*p;P=L;带头结点While(p-next)if(p-next-datax) s=malloc(sizeof(NODE);s-data=x; s-next=p;p-next=s;elsep=p-next;Return 0;II不带头结点Int insert(NODE *L,int x) NODE ,*s,*p;P=L;不带头结点While(p)if(p-datax) s=malloc(sizeof(NODE);s-data=x; s-next=p;p=s;elsep=p-next;Return 0;五(2)、有一个线性表存储在一个

8、不带头结点的单链表的第i个元素之前插入一个元素的算法分析:对不带头结点的链表操作时,要注意对第一个结点和其他结点操作的不同。 void LinkedListlnsert(LinkedList *L,int x,int i) /不带头结点的单链表的第i个元素之前插入一个元素 p=L:j=1; while(p!=NULL&jnext;j+; if(i=0|p=NULL) printf(”插入位置不正确n”);else while(p!=NULL&jnext;j+;q=(LinkedList*)malloc(sizeof(LinkedList);q-data=x; if(i=1) q-next=L;

9、L=q; /在第一个元素之前插入 elseq-next=p-next;p-next=q; /在其他位置插入 五、(3)设A、B是两个线性表,其表中元素递增有序,长度分别为m和n。试写一算法分别以顺序存储和链式存储将A和B归并成一个仍按元素值递增有序的线性表C。答:(1)分析:用三个变量i、j、k分别指示A、B、C三个顺序表的当前位置,将A、B表中较小的元素写入C中,直到有一个表先结束。最后将没结束的表的剩余元素写入C表中。SeqList *Seqmerge(SeqList A,SeqList B,SeqList *C)/有序顺序表A和B归并成有序顺序表C i=0;j=0;k=0; /i,i,k

10、分别为顺序表A,B,C的下标 while(im&jn) if(A.dataidatak=A.datai;i+; else C-datak=B.dataj; j+; /B中当前元素较小 k+; if (i=m) for(t=j;tdatak=B.datat;k+; /B表长度大于A表 else for(t=i;tdatak=A.datat;k+; /A表长度大于B表 C-length=m+n; return C;(2)VOid Linkmerge(LinkedList *A,LinkedList *B,LinkedList *C)有序链表A和B归并成有序链表C pa=A-next;pb=B-ne

11、xt;C=A;pc=C; while(pa&pb) A和B都不为空时 if(pa-datadata) A当前结点值较小 qa=pa-next; pC-next=pa; pc=pc-next; pa=qa; else qb=pb-next;pc-next=pb:pc=pc-next;pb=qb; /B当前结点值较小if(pa) pc-next=pa; /A没有结束,将A表剩余元素链接到C表if(pb) pc-next=pb; /B没有结束,将B表剩余元素链接到C表free(B); /释放B表的头结点本算法需要遍历两个线性表,因此时间复杂度为O(m+n)。五(4)编写一个算法将一个头结点指针为pa

12、的单链表A分解成两个单链表A和B,其头结点指针分别为pa和pb,使得A链表中含有原链表A中序号为奇数的元素,而B链表中含有原链表A中序号为偶数的元素,且保持原来的相对顺序。答:分析:根据题目要求,不能为表中的元素申请新的结点空间。用两个工作指针p和q分别指示序号为奇数和序号为偶数的结点,将q所指向的结点从A表删除,并链接到B表。void decompose(LinkedList *A,LinkedList *B)/单链表A分解成元素序号为奇数的单链表A和元素序号为偶数的单链表B LinkedList *r;p=A-next; B=(LinkedList*)malloc(sizeof(LinkedList); r=B; while(p!=NULL&p-next!=NULL) q=p-next; /q指向偶数序号的结点 p-next=q-next; /将q从A表中删除 r-next=q; /将q结点链接到B链表的末尾 r=q; /r总是指向B链表的最后个结点 p=p-next; /p指向原链表A中的奇数序号的结点 r-next=NULL; /将生成B链表中的最后一个结点的next域置为空

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

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