收藏 分享(赏)

数据结构习题1.pdf

上传人:精品资料 文档编号:9950144 上传时间:2019-09-22 格式:PDF 页数:25 大小:157.49KB
下载 相关 举报
数据结构习题1.pdf_第1页
第1页 / 共25页
数据结构习题1.pdf_第2页
第2页 / 共25页
数据结构习题1.pdf_第3页
第3页 / 共25页
数据结构习题1.pdf_第4页
第4页 / 共25页
数据结构习题1.pdf_第5页
第5页 / 共25页
点击查看更多>>
资源描述

1、数据结构与算法实验题2.3大家一起来报数实验任务编号为1-n的n个人按顺时针方向围坐一圈,从第一个人开始按顺时针方向自1开始报数,报到m时停止,在报到m的那个人的左右的两个人出列,从他在顺时针方向下一个人开始重新从1报数,如此下去。如果还在游戏的人数少于3个,则游戏终止。在一行内输出最后留下来的人编号数据输入输入第一行为T,代表接下去有T组测试,0#includetypedefstructLinkedList*List;structLinkedListListright;Listleft;intn;ListcreatList(intpeopleNum) ListmainList;Listlef

2、tList;ListheadList;headList=mainList=leftList=NULL;for(inti=1;in=i;if(mainList=NULL)mainList=headList=leftList;elsemainList-left=leftList;leftList-right=mainList;mainList=leftList;mainList-left=headList;headList-right=mainList;returnheadList;voidsearchList(ListmainList,intn,intm) while(n2) intmTemp=

3、(m%n);while(mTemp-) mainList=mainList-left;Listp,q;p=mainList-right;q=mainList-left;mainList-right=p-right;p-right-left=mainList;mainList-left=q-left;q-left-right=mainList;free(p);free(q);n-=2;if(n=1)printf(“%dn“,mainList-n);elseprintf(“%d%dn“,(mainList-n)(mainList-left-n)?(mainList-left-n):(mainLis

4、t-n),(mainList-n)left-n)?(mainList-left-n):(mainList-n);intmain() intm,n;intnum;scanf(“%d“,while(num-)scanf(“%d%d“,Listlist;list=creatList(n);searchList(list-right,n,m);数据结构与算法实验题3.3价值问题实验任务小明最近在好或者坏的天气如何影响人们的心情,他发现,在给定的一段日子里,人的价值可以通过一段时间内最坏的那天的心情等级(可以有多天)乘上这段时间心情等级的总和得到(心情等级越小,心情越坏),于是他想请你帮忙计算一下给定N

5、天里面,在连续一段时间里他可能的价值最高。数据输入第一行为总天数N(1intmain() intn;inti,j,k;inta100001=0;intsum100001=0;scanf(“%d“,for(i=1;i=0;k-) if(aktemp?max:temp;printf(“%I64dn“,max);算法与数据结构题实验题12.4道路实验任务某省调查城镇交通状况,得到现有城镇道路统计表,现给出每条道路连接的城镇编号,问当前的道路设计方案是否合理。合理的方案为任意两个城镇之间可以相互到达,有且只有一条通路。数据输入输入ab(1#include#defineMAX10002typedefst

6、ructUnion*U;structUnionintvalue;intsign;Uu;intv=0;intlen=0;intfindValue(intn)returnun.value;voidconnect(inta,intb)intva=findValue(a);intvb=findValue(b);if(va=vb)return;for(inti=0;ia?len:a;len=lenb?len:b;if(ua.sign=1if(s)if(!ua.sign)ua.value=a;ua.sign=1;if(!ub.sign)ub.value=b;ub.sign=1;connect(a,b);f

7、or(i=1;i#includeintmain()while(1)intsum10001=0;intinput=0;intedge=0;inta,b;intlen=0;while(scanf(“%d%d“,if(aa?len:a;len=lenb?len:b;suma=sumb=1;input+;for(inti=0;i#includetypedefstructTreeNode*tree;structTreeNode intn;inth;treeson3;voidDFS(treeendNode=t;dp+=1;t-h=dp;if(t-son0-h=-1)DFS(t-son0,dp,endDp,

8、endNode);if(t-son1if(t-son2dp-=1;voidfindNum(treetreeend=endNode;for(h=endDp;hendDp/2;h-) for(inti=0;isoni-h=h) end=endNode;endNode=endNode-soni;break;if(endDp%2!=0)printf(“%d %dn“,endNode-nn?endNode-n:end-n,endNode-nend-n?endNode-n:end-n);elseprintf(“%dn“,endNode-n);intmain() intnum,m,n;inti,j;intd

9、p,endDp;treeendNode;scanf(“%d“,treet=(tree)malloc(n*sizeof(TreeNode);for(i=0;i#includevoidtemp(inta=b;b=t;voidMax_Heapify(int*a,inti,intn)intsmallest;intl=2*i;intr=2*i+1;if(lal)smallest=l;elsesmallest=i;if(rar)smallest=r;if(smallest!=i)temp(ai,asmallest);Max_Heapify(a,smallest,n);intgetMin(int*a,int

10、n-;Max_Heapify(a,1,n);returnan+1;voidinsertItem(int*a,intx,intan=x;inti=n;while(i1i=i/2;intmain()intn;intsum=0;inti,j;scanf(“%d“,int*a=(int*)malloc(n+1)*sizeof(int);for(i=1;i0;i-) Max_Heapify(a,i,n);intsign=0;intcount;while(n1)inta1,a2;a1=getMin(a,n);if(sign=0)a2=getMin(a,n);elsea2=count;sign=0;coun

11、t=a1+a2;inta3=a1;if(counta3)insertItem(a,a1+a2,n);elsesign=1;sum+=count;printf(“%dn“,sum);/*71234567*/算法与数据结构题实验题9.1三瓣雪花实验任务在观念中,雪花总是六瓣的。然后在一处无人问津的小岛上总是下着三瓣的雪。每瓣雪花都有重量。重量在1到1000之间。两片雪花如果每瓣重量一一对应,便是相同。(可以转和翻转)你处在上帝的视角看雪,计算有多少不同的雪花。数据输入第一行为一整数N。代表雪花数量。(1#includetypedefstructTable*table;structTable int

12、a3;tablenext;tableT10001=NULL;voidsort(int*b)inti,j;for(i=0;ibj)inttemp=bi;bi=bj;bj=temp;return;intisEqual(tablet)inthash=(t-a0*1000*1000+t-a1*1000+t-a2)%10001;if(Thash=NULL)Thash=t;return0;tablepre,temp=Thash;while(temp!=NULL)if(temp-a0=t-a0pre=temp;temp=temp-next;if(pre-next=temp)pre-next=t;/ temp

13、=t;return0;intmain() intsum=0;intn;inti;scanf(“%d“,for(i=0;inext=NULL;scanf(“%d%d%d“,sort(t-a);if(!isEqual(t)sum+;printf(“%dn“,sum);return0;/*4123231312111*/算法与数据结构题实验题10.4文件名统计实验任务摩根手里有不超过10000个文件,他每天都会使用某些文件,并记录这个文件名,文件名为小写英文字母。现在他一共记录了n个文件名,他想知道每个文件被使用的概率是多少。数据输入第一行输入一个整数n(0#include#include#defin

14、eMAX26typedefstructTireTree*tire;structTireTreecharc30;tiresonMAX;intcount;voidinsertItem(tiret,chars)charch30;strcpy(ch,s);if(t=NULL|*s=0)return;inti;tirep=t;while(*s!=0)if(p-son*s-a=NULL)tiretemp=(tire)malloc(sizeof(TireTree);for(i=0;isoni=NULL;temp-count=0;p-son*s-a=temp;p=p-son*s-a;elsep=p-son*s

15、-a;s+;p-count+;strcpy(p-c,ch);voidprintMessage(tiret,intn)for(inti=0;isoni!=NULL)if(t-soni-count)printf(“%s%.4lfn“,t-soni-c,(double)t-soni-count/n);/ elseprintMessage(t-soni,n);/ intmain()intn;inti,j;charch30;tiret=(tire)malloc(sizeof(TireTree);for(i=0;isoni=NULL;t-count=0;scanf(“%d“,for(i=0;ivoidte

16、mp(inta=b;b=t;voidMax_Heapify(int*a,inti,intn) intl=2*i;intr=2*i+1;intlargest;if(lai)largest=l;elselargest=i;if(ralargest)largest=r;if(largest!=i) temp(ai,alargest);Max_Heapify(a,largest,n);intmain()intn;inti,j;ints=0;intsum200024=0;scanf(“%d“,for(i=0;i0;i-) Max_Heapify(sum,i,n);intm=n;for(i=m;i1;i-

17、) temp(sum1,sumi);n-;Max_Heapify(sum,1,n);summ+1=-1;intcount=0;for(i=1;i#include#includestructMyStack charele100001;intnum;voidinitMessage()num=0;voidpush(charc)elenum=c;num+;voidpop()num-; chartop() returnelenum-1;intisEmpty()returnnum#include#includetypedefstructnode*link;typedefstructnodeinte;lin

18、knext;NODE;/*dj-把边反向-dj*/intN,M,P,result=-1,flag=0;intdist10012;inta10011001;intprev1001=0;linknewnode(intx) linkp=(link)malloc(sizeof(NODE);p-e=x;p-next=0;returnp;linkfirst=0;voidinsert(intx) if(first)linkp=newnode(x);linkq=first-next;p-next=q;first-next=p;elsefirst=newnode(x);intdelmin(void) intx;

19、linkp=first,q=p-next,t=p,r=t;if(first-next=0)x=first-e;first=0;returnx;while(q)if(distq-eflageflag)t=p;r=q;p=q;q=q-next;if(t=r)first=r-next;elset-next=r-next;x=r-e;returnx;voiddj(void) inti,j;for(i=1;idistiflag+aij) distjflag=distiflag+aij;if(!prevj)insert(j);prevj=i;voiddjb(void)inti,j;for(i=1;idistiflag+aji) distjflag=distiflag+aji;if(!prevj)insert(j);prevj=i;intmain(void) intx,y,z,i,j;scanf(“%d%d%d“,memset(a,-1,sizeof(a);for(i=1;iz) axy=z;dj();flag+;memset(prev,0,sizeof(prev);first=0;djb();for(i=1;iresultprintf(“%d“,result);return0;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报