还剩13页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
数据结构课程设计报告学号2007024301姓名—课程数据结构程序:mainint iJ,n,k,nl,S,SO,sl,x,y,p;intg
[20]
[20];int b
[20];scanf%d,n;k=0;fori=0;in;i++{k++;forj=i;jn-i;j++{g[i]U]=k;g[j][i]=k;}forj=n-i-l;ji;j-{g[n-i-l][j]=k;g[j][n-i-l]=k;}fori=0;in;i++{forj=0;jn;j++printf%d,g[i][j];printfC^n;sO=O;nl=n+n-2;fori=0;in;i++b[i]=O;fori=n;in+n-l;i++b[i]=l;whileb[O]==O{sl=l;x=l;y=l;fori=l;i=nl;i++ifb[i]==O x++;else y++;sl=sl+g[x][y];};P=l j=2;whilepjsl{ifsl%j==O p=0;else j++;ifp sO++;ifb[sl]sO++;j=nl;whileb[j]==O j-;sl=O;whileb[j]==l;;{sl++b[j]=O;j-;}b[j]=l si-;k=n;fori=l;i=sl;i++;b[k]=l;k--printf%d,sO;getch;}运行结果程序main{int i,k,m,n,top,x,y,w,q,xO,yO;intdx
[9]={O,l,221,int dy
[9]={02l,177,1,-1,-2};int stack
[1000];r rintg
[100]
[100]={0};scanf”%d,%d,%cr,n,xO,yO;whilen%2==lx0+y0%2==l{printfinput error;scanf%d%d%cT/n,xO,yO;}g[xO][yO]=l;x=xO;;y=yo k=0;top=0;whiletopn*n-l{k++;ifk9{k=stack[top];top-;g冈M=0;x=x-dx[k];y=y-dy[k];else{w=x+dx[k];q=y+dy[k];ifw=lw=nq=lq=ng[w][q]==O{x=w;y=q;top++;g[x][y]=i;stack[top]=k;k=0;x=xO;;y=yo printf%d%d,x y;/fori=l;i=top;i++{x=x+dx[stack[i]];;y=y+dy[stack[i]];printf-%d%cr,x,y getch;运行结果1—23—021013—01—20—1211—03—22—10—13—21—0061111111122221123321122221123321
八、士兵排队2程序main{int x y,i il j ks sl,n,pjlJ2;int q
[100];//////int g
[7]
[7]={0,0,0,0,0,0,0,0,0,0,0,0,04,0,0,0,0,14,0,0,0,0,0,0,0,0,0,1,0,0,04,0,0,1,0,1,0,0,1,0,0,04,0,0,0;n=6;k=9;p=l;jl=l;whilepjl=n{s=0;fori=l;i=n;i++{sl=0;;;for j=lj=n;j++sl=sl+g[j][i]if sl==0{s++;j2=i;ifs==0{printferrorl;P=0;else ifsl{printfCerrorZ;P=0;else{q[jl]=j2;;jl++fori=l;i=n;i++g[i][j2]=l;fori=l;i=n;i++g[j2][i]=0;printf\nH;ifp fori=l;i=n;i++printf%d,q[i];getch;运行结果
九、HUFFMAN树编码程序:include stdio.h#include stdlib.hint mainint ijO’il jjl,jO,n,nLn2,cminLcmin,s,k,p;char str
[30]={wabcddeacefgfg};int tree
[52]
[13]={0};int h
[27]={0};int d
[27];int code
[27]
[21];str[O]=13;%scanf”cT,p;fori=l;i=str
[0];i++h[str[i]-96]++;n=0;fori=l;i=26;i++ifh[i]0n++;tree[n][l]=h[i];d[n]=i;}ifn=p{s=l;nl=p;}else{nl=n-p;n2=nl%p-l;ifn20nl=n+p-l-n2;s=l+nl-p/p-l;n2=nl;fori=l;i=s;i++;n2++cminl=0;forj=l;j=p;j++{cmin=1000;fork=l;kn2;k++iftree[k][O]==Otree[k][l]cmin{jl=k;cmin=tree[k][l];}cminl=cminl+cmin;tree[n2][2+p]=jl;tree[jl]
[2]=n2;tree[jl]
[0]=l;tree[n2][l]=cminl;fori=0;i=26;i++fork=0;k=20;k++code[i][k]=-l;fori=l;i=n;i++{i0=i;il=tree[i]
[2];k=21;whileil!=O{k-;forjl=3;jl3+p;jl++iftree[il][jl]==iO code[i][k]=jl-3;iO=il;il=tree[il]
[2];}fori=l;i=n;i++%,{printf”d d[i]+96;k=l;,whilecode[i][k]==-l k++;forjl=k;jl=20;jl++printf“%d code[i][jl];printfCXn*;getchar;systemPAUSE;return0;}运行结果程序main{int i,j,cmax,jl;char a
[100]={wabcdefghijk};char b
[100]={wabcyefghi};charg
[100]
[100]={0};a[O]=ll;b
[0]=9;ef44401235abcd324cmax=O;fori=l;i=a
[0];i++forj=l;j=b
[0];j++ifa[j]==b[i]ifg[i][j]cmaxcmax=g[i][j];else;g[i][j]=O%,printf d\n cmax;fori=jl-cmax+l;i=jl;i++printf%c a[i];zgetch;运行结果
十一、迷宫问题Efghi程序#include stdio.h#define M5〃行数#define N7〃列数mainint k,top,XMW,q,p,i;;intdx
[9]={0,l,l,lA-Vlrl,0;int dy
[9]={0,-1,0,144,0,-1,-1//char b
[100];//char a
[100];1,0,14,0,0,0,1,1,0,0,1,1,1,0,1,0,0,1,1,1,1,0,1,0,1,0,1,1,1,0,0,14,1,0,0,0,0,1};char stack
[100];//栈的最多储存元素int flag
[20]
[20]={0};int count;〃计数1,0,14,0,0,0,1,1,0,0,1,1,1,0,1,0,0,1,1,1,1,0,1,0,1,0,1,1,1,0,0,14,1,0,0,0,0,1};int g[M+l][N+l]={0,04,1,1,1,0,0,g⑼⑼=1;〃从第1行第1列开始top=0;k=0;x=0;y=0;p=l;while pk++;ifk8〃八个方向{k=stack[top];top-;g[x][y]=0;x=x-dx[k];y=y-dy[k];}else{w=x+dx[k];q=y+dy[k];ifw=Mw=Oq=Nq=Og[w][q]==O//在范围内,路径可走,没做过;x=w;y=q g[x][y]=l;top++;//flag[w][q]=l;stack[top]=k;k=0;if x==0y==Np=0;//stack[top]=k;//k=0;}//printfx=%dy=%d\n,,,x,y;}x=0;y=0;count=0;printf\n;fori=0;i=top;i++x=x+dx[stack[i]];y=y+dy[stack[i]];count++;//printf%d-%d,,x y;//b[i]={x-y};//a[i]=x;,,//b[i]=y;printf%d-%d,,xy;//}printfC1最短路径是%d,count;getch;运行结果:0-0X1-1X2-1X3-0X4-0X3-1X4-2X5-3X5-4X5-5X5-6X4-7X3-6X4-60-01-12-13-04-03-14-25-35-45-55-64-73-64-60-01-1X2-1X3-0X4-0X3-1X4-2X5-3X5-4X5-5X5-6X4-7X3-6X4-60-01-12-13-04-03-14-25-35-45-55-64-73-64-60-01-1X2-1X3-0X4-0X3-1X4-2X5-3X5-4X5-5X5-6X4-7X3-6X4-60-01-12-13-04-03-14-25-35-45-55-64-73-64-60-01-1X2-1X3-0X4-0X3-1X4-2X5-3X5-4X5-5X5-6X4-7X3-6X4-60-01-1X2-1X3-0X4-0X3-1X4-25—3X5-4X5-5X5-6X4-7X3-6X4-60-01-12-13-04-03-14-25-35-45-55-64-73-60-01-12-13-04-03-14-25-35-45-55-64-73-60-01-1X2-1X3-0X4-0X3-1X4-2X5-3X5-4X5-5X5-6X4-7X3-60-01-1X2-1X3-0X4-0X3-1X4-25-3X5-4X5-5X5-6X4-7X3-60-01-12-13-04-03-14-25-35-45-55-64-73-62-60-01-12-13-04-03-14-25-35-45-55-64-73-62-60-01-12-13-04-03-14-25-35-45-55-64-73-62-60-01-12-13-04-03-14-25-35-45-55-64-73-62-60-01-1X2-1X3-0X4-0X3-1X4-2X5-3X5-4X5-5X5-6X4-7X3-6X2-60-01-12-13-04-03-14-25-35-45-55-64-73-62-60-01-1X2-1X3-0X4-0X3-1X4-2X5-3X5-4X5-5X5-6X4-7X3-6X2-6X1-60-01-12-13-04-03-14-25-35-45-55-64-73-62-61-60-01-12-13-04-03-14-25-35-45-55-64-73-62-61-60-01-12-13-04-03-14-25-35-45-55-64-73-62-61-60-01-1X2-1X3-0X4-0X3-1X4-2X5-3X5-4X5-5X5-6X4-7X3-6X2-6X1-60-01-12-13-04-03-14-25-35-45-55-64-73-62-61-607
十二、挖宝藏程序#include stdio.h#define m10000main int i,j,k top,cmax,cen,tk,n,tl topl;,,intw
[20]={9364128,35531721,32,36;int t
[10][101=0,0,0,0,0,0,0,0,0,0,//////0,0,13,171,11,171,9,12,m,m//l0,13,0,10,12,m,m,m,m,zm,//20」l,12,mQ,9,m,m,8,m,/一042,m,m,m m17,0,10,m,//7z z0,171,171,171,8,171,171,10,0,11,int flag
[10]={0};int stack
[100];k=40;n=9;cmax=w[l];flag[l]=O;cen=w[l];top=0;stack[O]=l;k=O;tl=O;whiletop=0k++;ifknk=stack[top];top-;cen=cen-w[k];flag[k]=0;tl=tl-t[stack[top]][k];else ifflag[k]==0tl+t[stack[top]][k]flag[k]=l;cen=cen+w[k];tl=tl+t[stack[top]][k];top++;stack[top]=k;k=0;ifcencmaxcmax=cen;printf%d,cmax;运行结果getch;:
十三、平面曲线程序main{int n,nl,m,ij,pl,p2p3,p4,x,jl frontrear,s0,cmax p;z//zintg
[100]
[100]={0};
一、单词接龙int q
[100];程序#includestdio.h#includestring.h#includestdlib.h#define M20#define N100int mainvoidchar str[M][N];char jielong
[2000];int n,i;char kaitou;void fjielongcharpstr[][N],char*pjielong,int n_x,char kaitou_x;printflnputthe number of the strings:;,scanf”%d n;printflnput thestrings:;fori=0;in;i++{scanf%s,str[i];getchar;printfkaitou;scanf%c;kaitou;fjielongstrjielong,n,kaitou;printfthe finalstrings is:%sjielong;systempause;return0;void fjielongcharpstr[][N],char*pjielongjnt n_x,char kaitou_x{int i;fori=0;in_x;i++{ifpstr[i]
[0]==kaitou_x{strcpypjielong,pstr[i];pjielong+=strlenpstr[i]+l;break;\fori=0;in_x;i++{ifpstr[i]
[0]!=kaitou_x{if*pjielong-l==pstr[i][O]{pjielong-;}strcpypjielong,pstr[i];pjielong+=strlenpstr[i]+l;int flag
[100]={0};char a
[20]
[20]={0};scanf%d,%cT/n,m;fori=l;i=n;i++forj=0;j=m;j++{scanfC^c^anU];printf%4c,a[i][j];ifj==m-l printf\nH;fori=l;i=n;i++forj=l;j=m;j++{pl=m+m+l*i-l+j;p2=m+m+l*i-l+m+j;p3=p2+l;p4=pl+m+m+l;ifa[i]D]==W;{g[pl][p2]=l g[p2][pl]=l;g[p3][p4]=l;g[p4][p3]=l;else{g[p2][p4]=l;g[p4][p2]=l;;g[pl][p3]=l;g[p3][pl]=lnl=n*m+l+m*n+l;for i=l;i=nl;i++{for j=l;j=nl;j++printf%4d g[i][j];printf\nH;zn=nl;cmax=0;s0=0;p=l;while pP=0;forj=n;j=l;j-ifflagUl==O;jl=j;P=l;ifPsO++;q[l]=jl flag[jl]=l;front=l;rear=l;whilefront=rear x=q[front];front++;forj=l;j=n;j++if flag[j]==Og[x][j]==l flag[j]=l;rear++;q[rear]=j;ifrearcmax cmax=rear;,}printf%d\n,sO;printf%d\n cmax;getch;运行结果:
2.3AAB BAB57return0;}运行结果:input thenumberofthestrings3input thestrings asd sdf dfgkaitouathe resultasdfglen5Press anykey tocontinue...
二、方格问题程序main{inti,n,gj;int fl
[101]={0},f2
[101]={0};int f3
[101];%scanf”cT/n;fl
[100]=l;f2
[100]=3;fori=3;i=n;i++;{g=0forj=100;j=l;j-{g=g+2*fl[j]+f2[j];f3[j]=g%10;g=g/10;}forj=l;j=100;j++{fl[j]=f2[j];f2[j]=f3[j];};j=lwhilef3[j]==0j++;,fori=j;i=100;i++printf”%d f3[i];printf\n;运行结果435864062014805
二、FBZ串程序main inti,j,k,n,temp;ints
[1000]
[2];char q
[2000]={0};temp=l;,scanf“%d k;ifk==l n=l;elsefori=2;i=k;i++n=temp*2;temp=n;,fori=0;i=n-l;i++forj=0;j=l;j++scanf-%ds[i][j];fori=0;i=n-l;i++forj=0;j=l;j++{ifs[i][j]==0q[n*2+i*2+j]=,Z;else q[n*2+i*2+j]=B;fori=0;i=n-l;i++{ifs[i][O]==s[i][l]s[i][O]==O q[n+i]=Z;elseifs[i][O]==s[i][l]s[i][O]==l q[n+i]=B;else q[n+i]=F;}forj=n;j=2;j=j/2fori=0;i=j-l;i=i+2{ifq[j+i]==q[j+i+l]q[j+i]!=Fq[j+i/2]=qO+n;elseq[j+i/2]=F;printf%c,,q[l];fori=l;i=n*2-l;i=i++/{ifq[i]==Fprintf,%c%c,q[i*2],q[i*2+l];getch;运行结果:
四、分油程序main intq
[100]
[4]={0,0,0,0,10,0,0,0};int j,fronLrear,xlO,x7,x3,ylO,y7,y3,p,pLi;front=l;rear=l;p=l;whilep{xl0=q[front]
[0];x7=q[front][l];x3=q[front]
[2];front++;ifxl0==5x7==5p=0;else{ifx77;{yl0=xl0+x7-7;y7=7;y3=x3;Pl=lfor i=l;i=rear;i++if yl0==q[i]
[0]y7==q[i][l]pl=0;if pl==l{rear++;q[rear]
[0]=yl0;q[rear][l]=y7;q[rear]
[2]=y3;q[rear]
[3]=front-l;if x33{yl0=xl0+x3-3;y7=x7;;y3=3;pl=lfor i=l;i=rear;i++if yl0==q[i]
[0]y7==q[i][l]pl=0;if pl==l{rear++;q[rear]
[0]=yl0;q[rear][l]=y7;q[rear]
[2]=y3;q[rear]
[3]=front-l;if x70{yl0=xl0+x7;;y7=o y3=x3;;pl=l fori=l;i=rear;i++if yl0==q[i]
[0]y7==q[i][l]pl=0;if pl==l{rear++;q[rear]
[0]=yl0;q[rear][l]=y7;q[rear]
[2]=y3;q[rear]
[3]=front-l;if x70x33{ylO=xlO;if x7+x33{y7=x7+x3-3;y3=3;}else{y7=0;y3=x7+x3;};pl=l fori=l;i=rear;i++if yl0==q[i]
[0]y7==q[i][l]pl=0;if pl==l{rear++;q[rear]
[0]=yl0;q[rear][l]=y7;q[rear]
[2]=y3;q[rear]
[3]=front-l;if x30{yl0=xl0+x3;y7=x7;;y3=0;pl=lfor i=l;i=rear;i++if yl0==q[i]
[0]y7==q[i][l]pl=0;if pl==l{rear++;q[rear][O]=ylO;q[rear][l]=y7;q[rear]
[2]=y3;q[rear]
[3]=front-l;if x77x30{ylO=xlO;if x7+x37{y7=7;y3=x7+x3-7;}else{y7=x7+x3;y3=0;};pl=l fori=l;i=rear;i++if yl0==q[i]
[0]y7==q[i][l]pl=0;if pl==l{rear++;q[rear]
[0]=yl0;q[rear][l]=y7;q[rear]
[2]=y3;q[rear]
[3]=front-l;}front-;forj=l;j=front;j++printf%d%d%d\n[j]
[0],qU][l],q[j]
[2];,qgetch;运行结果:
五、关键点和桥程序#include stdio.hmainint g
[10][101=0,0,0,0,0,0,0,0,0,0,0,0,1,14,0,0,0,0,0,04,0,1,0,0,1,0,0,0,0,1,1,04,1,0,0,0,0,0,1,04,0,1,0,0,0,0,0,0,0,14,0,1,0,0,0,0,04,0,0,1,0,1,0,0,0,0,0,0,0,04/0,1/0,0,0,0,0,0,0,04,0,1,0,0,0,0,0,0,0,04,0};int g0
[10]
[10]={0};inti,j,x,front,rear,s,n;int a,b;int flag
[10]={0};int q
[10];关键点为;n=9;printf:fori=5;in;i++〃关键点检索g0
[10]
[10]=g
[10]
[10];g0[i][i+l]=0;g0[i+l][i]=0;flag[i]=l;;q[l]=i front=l;rear=l;whilefront=rearx=q[front];front++;forj=l;j=n;j++ifflagU]==Og[x]U]==l rear++;q[rear]=j;flag[j]=l;}ifrear=n-l{printf%dti;}〃广度优先循环搜索判断关键点,不符合条件记录输出printf\n;printf桥为”;fora=6;an;a++〃桥检索g0
[10]
[10]=g
[10]
[10];g0[a][a+l]=0;g0[a+l][a]=0;flag[a]=l;;q[l]=afront=l;rear=l;whilefront=rear x=q[front];front++;forb=l;b=n;b++if{flag[b]==Og[x][b]==l000333003300312123000rear++;q[rear]=b;flag[b]=l;}ifrearn-l{printf%d%d,a,a+l;}getch;}运行结果关键点为678
六、桥为677——88——9
六、矩阵。