数据结构代码c.docx

上传人:b****2 文档编号:2250230 上传时间:2023-05-03 格式:DOCX 页数:49 大小:24.37KB
下载 相关 举报
数据结构代码c.docx_第1页
第1页 / 共49页
数据结构代码c.docx_第2页
第2页 / 共49页
数据结构代码c.docx_第3页
第3页 / 共49页
数据结构代码c.docx_第4页
第4页 / 共49页
数据结构代码c.docx_第5页
第5页 / 共49页
数据结构代码c.docx_第6页
第6页 / 共49页
数据结构代码c.docx_第7页
第7页 / 共49页
数据结构代码c.docx_第8页
第8页 / 共49页
数据结构代码c.docx_第9页
第9页 / 共49页
数据结构代码c.docx_第10页
第10页 / 共49页
数据结构代码c.docx_第11页
第11页 / 共49页
数据结构代码c.docx_第12页
第12页 / 共49页
数据结构代码c.docx_第13页
第13页 / 共49页
数据结构代码c.docx_第14页
第14页 / 共49页
数据结构代码c.docx_第15页
第15页 / 共49页
数据结构代码c.docx_第16页
第16页 / 共49页
数据结构代码c.docx_第17页
第17页 / 共49页
数据结构代码c.docx_第18页
第18页 / 共49页
数据结构代码c.docx_第19页
第19页 / 共49页
数据结构代码c.docx_第20页
第20页 / 共49页
亲,该文档总共49页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

数据结构代码c.docx

《数据结构代码c.docx》由会员分享,可在线阅读,更多相关《数据结构代码c.docx(49页珍藏版)》请在冰点文库上搜索。

数据结构代码c.docx

数据结构代码c

文件的操作:

#include

#include

intmain()

{

FILE*fp,*out,*in,*p;

inti=0,a;

fp=fopen("F:

\\text\\intfile.dat","w");

if(fp==NULL)

{

printf("openthefileerror");

exit(0);

}

while(i<1000)

{

a=rand();

printf("%8d",a);

fprintf(fp,"%8d",a);

i++;

}

printf("\n");

fclose(fp);

in=fopen("F:

\\text\\intfile.dat","r");

if(in==NULL)

{

printf("openthefileerror");

exit(0);

}

while(!

feof(in))

{

fscanf(in,"%8d",&a);

}

fclose(in);

out=fopen("F:

\\text\\intfile.dat","r");

if(out==NULL)

{

printf("openthefileerror");

exit(0);

}

fseek(out,32L,SEEK_SET);

fscanf(out,"%8d",&a);

printf("%8d",a);

fseek(out,72L,SEEK_SET);

fscanf(out,"%8d",&a);

printf("%8d",a);

fseek(out,-40L,SEEK_END);

fscanf(out,"%8d",&a);

printf("%8d",a);

fseek(out,-80L,SEEK_END);

fscanf(out,"%8d",&a);

printf("%8d",a);

system("pause");

fclose(out);

return0;

}

文件操作2:

#include

#include

typedefstruct

{

charname[10];//

charnum[10];//

intsex;

intgrade[3];

}STUDENT;

STUDENTstudinfo[3];

intmain()

{

FILE*in,*fp;

inti,j;

fp=fopen("F:

\\text\\studinfo.dat","wb");

if(fp==NULL)

{

printf("openthefileerror");

exit(0);

}

printf("entertheinformationofstudents:

\n");

for(i=0;i<3;i++)

{

scanf("%s",studinfo[i].name);

scanf("%s",studinfo[i].num);

scanf("%d",&studinfo[i].sex);

for(j=0;j<3;j++)

scanf("%d",&studinfo[i].grade[j]);//

}

fwrite(studinfo,sizeof(STUDENT),3,fp);

fclose(fp);

in=fopen("F:

\\text\\studinfo.dat","rb");

if(in==NULL)

{

printf("openthefileerror");

exit(0);

}

fread(studinfo,sizeof(STUDENT),3,in);//

for(i=0;i<3;i++)

{

printf("%5s%5s",studinfo[i].name,studinfo[i].num);

printf("%3d",studinfo[i].sex);

for(j=0;j<3;j++)

printf("%3d",studinfo[i].grade[j]);

printf("\n");

}

fclose(in);

system("pause");

return0;

}

排序:

#include

#include

#definen1000

typedefstruct

{

intkey;

}rectype;

rectypeR[n+1];

voidBubblesort(rectypeR[])

{

inti,j,swap;

for(i=1;i

{

swap=0;

for(j=n;j>i;j--)

{

if(R[j-1].key>R[j].key)

{

R[0]=R[j-1];

R[j-1]=R[j];

R[j]=R[0];

swap=1;

}

}

if(!

swap)break;

}

}

voidInsertsort(rectypeR[])

{

inti,j;

for(i=2;i<=n;i++)

{

if(R[i].key

{

R[0]=R[i];

j=i-1;

while(R[0].key

R[j+1]=R[j--];

R[j+1]=R[0];

}

}

}

voidSelectsort(rectypeR[],ints)//对R[1]~R[n]进行简单选择排序

{

inti,j,k;

rectypet;

for(i=1;i

{

k=i;

for(j=i+1;j<=n;j++)//选择关键字最小的记录R[k]

{

if(R[i].key

k=j;

}

if(k!

=i)

{t=R[i];

R[i]=R[k];

R[k]=t;

}

}

}

intPartition(rectypeR[],intlow,inthigh)//返回划分后被定位的基准记录的位置

{

rectypepivot=R[low];

while(low

{

while(low=pivot.key)

high--;//自右向左扫描,查找第一个关键字大于R[0].key的记录

if(low

R[low++]=R[high];//移动R[high]至R[low]

while(low

low++;

if(low

R[high--]=R[low];//移动R[low]至R[high]

}

R[low]=pivot;

returnlow;

}

//快速排序

voidQuicksort(rectypeR[],ints,intt)

{

inti;

if(s

{

i=Partition(R,s,t);//对R[s]-R[t]进行划分Quicksort(R,s,i-1);//

Quicksort(R,s,i-1);//递归处理左序列

Quicksort(R,i+1,t);//递归处理右序列

}

}

intmain()

{

FILE*fp;

inti=0,a;

fp=fopen("F:

//text//intfile","w");

if(fp==NULL)

{

printf("error");

exit(0);

}

while(i

{

a=rand();

printf("%10d",a);

fprintf(fp,"%10d",a);

i++;

}

printf("\n");

fclose(fp);

fp=fopen("F:

//text//intfile","r");

if(fp==NULL)

{

printf("error");

exit(0);

}

for(i=1;i<=n;i++)

{

fscanf(fp,"%10d",&R[i].key);

}

printf("冒泡排序:

\n");

Bubblesort(R);

for(i=1;i<=n;i++)

printf("%10d",R[i].key);

printf("\n");

printf("直接插入排序:

\n");

Insertsort(R);

for(i=1;i<=n;i++)

printf("%10d",R[i].key);

printf("\n");

printf("简单选择排序:

\n");

Selectsort(R,n);

for(i=1;i<=n;i++)

printf("%10d",R[i].key);

printf("\n");

printf("快速排序:

\n");

Quicksort(R,1,n);

for(i=1;i<=n;i++)

printf("%10d",R[i].key);

printf("\n");

fclose(fp);

system("pause");

return0;

}

排序2

#include

#include

#include

typedefstruct

{

charname[10];//

charnum[10];//

intsex;

intgrade[4];

}STUDENT;

STUDENTstudinfo[4];

intmain()

{

FILE*in,*fp;

inti,j;intaver[4];intk,swap;

fp=fopen("F:

\\text\\studinfo.dat","wb");

if(fp==NULL)

{

printf("openthefileerror");

exit(0);

}

printf("entertheinformationofstudents:

\n");

for(i=1;i<=3;i++)

{

scanf("%s",studinfo[i].name);

scanf("%s",studinfo[i].num);

scanf("%d",&studinfo[i].sex);

for(j=1;j<=3;j++)

scanf("%d",&studinfo[i].grade[j]);//

}

fwrite(studinfo,sizeof(STUDENT),3,fp);

fclose(fp);

in=fopen("F:

\\text\\studinfo.dat","rb");

if(in==NULL)

{

printf("openthefileerror");

exit(0);

}

fread(studinfo,sizeof(STUDENT),3,in);//

for(i=1;i<=3;i++)

{

printf("%5s%5s",studinfo[i].name,studinfo[i].num);

printf("%3d",studinfo[i].sex);

for(j=1;j<=3;j++)

printf("%3d",studinfo[i].grade[j]);

printf("\n");

}

for(i=1;i<3;i++)

{

swap=0;

for(j=3;j>i;j--)

{

if(strcmp(studinfo[j-1].num,studinfo[j].num)>0)

{

studinfo[0]=studinfo[j-1];

studinfo[j-1]=studinfo[j];

studinfo[j]=studinfo[0];

swap=1;

}

}

if(!

swap)break;

}

printf("按学号排列后:

\n");

for(i=1;i<=3;i++)

{

printf("%5s%5s",studinfo[i].name,studinfo[i].num);

printf("%5d",studinfo[i].sex);

for(j=1;j<=3;j++)

printf("%5d",studinfo[i].grade[j]);

printf("\n");

}

printf("\n");

for(i=1;i<3;i++)

{

swap=0;

for(j=3;j>i;j--)

{

if(strcmp(studinfo[j-1].name,studinfo[j].name)>0)

{

studinfo[0]=studinfo[j-1];

studinfo[j-1]=studinfo[j];

studinfo[j]=studinfo[0];

swap=1;

}

}

if(!

swap)break;

}

printf("按姓名排序后:

\n");

for(i=1;i<=3;i++)

{

printf("%8s%8s",studinfo[i].name,studinfo[i].num);

printf("%5d",studinfo[i].sex);

for(j=1;j<=3;j++)

printf("%10d",studinfo[i].grade[j]);

printf("\n");

}

printf("\n");

printf("按平均成绩排序后:

\n");

for(i=1;i<=3;i++)

{

aver[i]=(studinfo[i].grade[1]+studinfo[i].grade[2]+studinfo[i].grade[3])/3;

}

for(i=1;i<=2;i++)

{

if(aver[i]

{

studinfo[0]=studinfo[i];

studinfo[i]=studinfo[i+1];

studinfo[i+1]=studinfo[0];

}

}

for(i=1;i<=3;i++)

{

printf("%8s%8s",studinfo[i].name,studinfo[i].num);

printf("%10d%10d",studinfo[i].sex,aver[i]);

for(j=1;j<=3;j++)

printf("%10d",studinfo[i].grade[j]);

printf("\n");

}

fclose(in);

system("pause");

return0;

}

括号匹配

#include

#include

#defineMaxsize100

typedefstruct

{

chardata[Maxsize];

inttop;

}SqStack;

SqStack*InitList()

{

SqStack*S=(SqStack*)malloc(sizeof(SqStack));

S->top=0;

returnS;

}

intcorrect(charexp[])

{

charst[Maxsize];

inttop=-1,i=0;

inttag=1;

while(exp[i]!

='\0'&&tag)

{

if(exp[i]=='('||exp[i]=='['||exp[i]=='{')

{

top++;

st[top]=exp[i];

}

if(exp[i]==')')

{

if(st[top]=='(')

top--;

else

tag=0;

}

if(exp[i]==']')

{

if(st[top]=='[')

top--;

else

tag=0;

}

if(exp[i]=='}')

{

if(st[top]=='{')

top--;

else

tag=0;

}

i++;

}

if(top!

=-1)tag=0;

if(tag==0)printf("no");

elseprintf("yes");

}

intmain()

{

SqStack*S;

intcorrect(charexp[]);

charn,exp[Maxsize];

printf("输入表达式:

\n");

gets(exp);

correct(exp);

system("pause");

return0;

}

后缀表示法

#include

#include

#include

#defineSTACK_INIT_SIZE100

#defineSTACKINCREMENT10

#defineN100

typedefstruct

{

int*base;

int*top;

intstacksize;

}SqStack;

voidInitStack(SqStack&S){

//构造一个空栈S

S.base=(int*)malloc(STACK_INIT_SIZE*sizeof(int));

if(!

S.base)exit(0);

S.top=S.base;

S.stacksize=STACK_INIT_SIZE;

}//InitStack

voidPush(SqStack&S,inte){

//插入元素e为新的栈顶元素

if(S.top-S.base>=S.stacksize)

{

S.base=(int*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(int));

if(!

S.base)exit(0);

S.top=S.base+S.stacksize;

S.stacksize+=STACKINCREMENT;

}

*S.top++=e;

}

voidPop(SqStack&S,int*e){

//若栈不空,则删除S的栈顶元素,用e返回其值

if(S.base==S.top)return;

*e=*--S.top;

}

intmain()

{

chara[N];

charp[N];

inti,j,q;

intc,b,d;

SqStackS;

InitStack(S);

gets(a);

for(i=0;a[i]!

='\0';i++)

{j=0;

while(a[i]!

='')

{

p[j]=a[i];

i++;

j++;

}

if((p[0]!

='+')&&(p[0]!

='-')&&(p[0]!

='*')&&(p[0]!

='/'))

{

q=atoi(p);

Push(S,q);

}

else

{

Pop(S,&c);

Pop(S,&b);

switch(p[0])

{

case'+':

d=b+c;break;

case'-':

d=b-c;break;

case'*':

d=b*c;break;

case'/':

d=b/c;break;

default:

printf("hehe");

}

Push(S,d);

}

memset(p,0,N);

}

Pop(S,&d);

printf("\n答案为:

%d\n",d);

system("pause");

return0;

}

邻接矩阵的深度遍历:

#include

#include

#definen8

#definee10//图的边数

intvisited[n];

typedefintvextype;//顶点的数据结构

typedefintadjtype;//顶点权值数据结构

typedefstruct

{

vextypevex[n];

adjtypearc[n][n];//邻接矩阵

}graph;

graphG;

voidCreateAdjArray(graph*G)//建立无向网络邻接矩阵

{

inti,j,k;

for(i=1;i<=n;i++)

{G->vex[i]=i;}

for(i=1;i<=n;i++)

{

for(j=1;j<=n;j++)

{

G->arc[i][j]=0;

}

}

for(k=1;k<=e;k++)

{

scanf("%d%d",&i,&j);

G->arc[i][j]=1;

}

}

voidDFSTraverse(graph*G,inti)//深度遍历搜索

{

printf("深度优先遍历:

顶点%d\n",G->vex[i]);

visited[i]=1;

for(intj=1;j<=n;j++)

{

if(G->arc[i][j]==1&&visited[j]==0)

DFSTraverse(G,j);

}

}

voidDFSA(graph*G)

{

inti;

for(i=1;i<=n;i++)

visited[i]=0;

for(i=1;i<=n;i++)

if(!

visited[i])

DFSTraverse(G,i);

}//DFSA

intmain()

{

inti;

graph*G=(graph*)malloc(sizeof(graph));

CreateAdjArray(G);

printf("inputgraphG:

\n");

DFSA(

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

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2