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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数据结构练习题Word文档下载推荐.docx

1、 data1=data2; if(data0=data1) printf( else printf( else if(data1=data2) printf( else for(i=0;i+) printf(%2d,datai); else if(n3)/当表的元素大于3时/ i=0; while(in)/循环检测/ while(in-1&datai!=datai+1) i+; /元素i与下一个元素不重复,继续检测/ if(i+2n)j=i+2;/发现重复/ while(jn)&(datai=dataj) j+;/元素j是与元素i不重复的元素 for(k=i+1;jk+,j+) datak=d

2、ataj;/前移/ n=k; i+;i+)/输出没有重复的顺序表/%3d 2. 题目要求:一个长度为N的数组,包含一到N的正整数,找出其中有两个相等的数思路:这道题的第一个想法就是一个个比较,但是要注意到N的最大值达到106,而且时间限制为2S。这样比下去时间复杂度是O(n),但是每次都要比较,明显超时(Time Limit Exceed)。比较的时间比加减法所花的时间要长(具体长多少还不确定)。所以这题采用一加一减或者一减一加:就是在一个循环里(循环从1开始)用一个变量(初始值为0)加上接收进来的数并减去循环变量的值,直到循环结束,要注意一下结果(是正整数)。#include int g()

3、 /这个函数接收会更高效char c;int sum=0;while (c=getchar()!= )sum=sum*10+c-48;return sum;int main()int n;int val;register int i,sum;while (scanf(%d%*cn) != EOF)sum=0;for (i=1;val=g();sum+=val;sum-=i;scanf(val);printf(,sum);return 0;3. 以an为参考元素的快速排序。 int a10000; int i,j,t,n; for(i=1;=n;ai); j=n; t=an;/暂存参考元素/ i

4、=1;j)j&ai=t)i+;/当前元素不大于参考元素时,指针i后移/ if(it)j-;/当前元素大于参考元素时,指针j前移/j)ai+=aj;/将小于参考元素的当前元素前移/ ai=t;/参考元素置于分界位置/ for(i=1; printf(,ai); printf(n);4. 排序:void insertsort(int a,int n)/直接插入排序 int i,j; for(i=2;i+)/从a1,a2,a3.an/ if(aiai-1) a0=ai; for(j=i-1;a0i;j-) if(aj-1aj)/从后往前两两比较/ t=aj-1; aj-1=aj; aj=t;void

5、 selectsort(int a,int n)/简单选择排序/ int min,i,j,t; min=i; for(j=i+1;j+) if(ajamin)min=j; t=amin; amin=ai; ai=t;5. 试编写一个能在数组L1.n中找出第k小的元素(即从小到大排序后处于第k个位置的元素):int kth_elem(int a,int low,int high,int k) int pivot=alow; int low_temp=low; int high_temp=high; while(lowhigh) while(low=pivot) -high; alow=ahigh

6、;alowk) return kth_elem(a,low_temp,low-1,k); else return kth_elem(a,low+1,high_temp,k); int i,n,a100000,k;i+)/从a1,a2,a3.an/ scanf(k);,kth_elem(a,1,n,k);6. 求N!的位数:(用一个数学公式解出来)math.hint n,len;double pi,e; pi=acos(double)(-1); e=exp(1.0); len=(int)(log10(sqrt(2*pi*n)+n*log10(n/e)+1); if(n=1) len=1;,len

7、);7. 请你编写一个程序,能够将一从左到右书写的文字自动转成从右向左的顺序。输入的第一行是一个数字n(n char a201; int i,t,j,n; int count; scanf(count); getchar();/吃掉回车/ for(j=0;=count; gets(a);/输入字符串/ n=strlen(a);for(i=0;n/2; t=an-1-i; an-1-i=ai; ai=t;puts(a);/输出字符串/8. 对于给定的n (n5*106),计算代数式的值。 double sum=1; int i,n; sum=sum+1/(double)i;%.12fn9. 写一

8、个程序能够将Bob的文章中的英文字母全部变成小写的 char a51; while(gets(a)!0 puts(strlwr(a);/strlwr是将大写编成小写的函数/10. 请编写一个程序,将x分解为若干个素数的乘积。int Isp(int n) double k; int i; if(n=1) return 0; k=(double)sqrt(n);=k; if(n%i=0) return 0;/n不是素数/ return 1;/n是素数/void resolve(int n)/分解/ int i,k,m; int a1000; k=0; m=n;=m; while(m%i=0) m=

9、m/i; ak=i; k+;k-1;%d*,ak-1); int x,i,n;x)!=x;n); if(Isp(n),n); resolve(n);11. 求(其中0m0) return acker(2,acker(m,n-1); else if(n=0) return acker(2,1); return 0; int m,n;%d%dm,&,acker(m,n);12. 设2n张牌分别标记为1, 2, ., n, n+1, ., 2n,初始时这2n张牌按其标号从小到大排列。经一次洗牌后,原来的排列顺序变成n+1, 1, n+2, 2, ., 2n, n。即前n张牌被放到偶数位置2, 4,

10、., 2n,而后n张牌被放到奇数位置1, 3, ., 2n-1。可以证明对于任何一个自然数n,经过若干次洗牌后可恢复初始状态。现在你的的任务是计算对于给定的n的值(n105),最少需要经过多少次洗牌可恢复到初始状态。只需考虑其中一张牌,如1,回到原来位置的次数就是所求的次数。 int i,n,count; count=0; do=n) i=i*2;count+; else i=i-(2*n-i+1); while(i!=1);,count);13.求a的b次方的值的个位数的和。 int a,b,s,i;a,&b)! if(a=0&b=0)break;/a=0,b=0表示输入结束,不需要处理,break是跳出循环体/ if(a=0) 0n continue;/结束本次循环,进行下一次/ s=1;b;i+)/把a的b次方的值%9就是答案/ s=s*a; s=s%9; if(s=0) s=9;,s);

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

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