数据结构实习题答案Word下载.docx
《数据结构实习题答案Word下载.docx》由会员分享,可在线阅读,更多相关《数据结构实习题答案Word下载.docx(21页珍藏版)》请在冰豆网上搜索。
三、分析过程
四、设计过程
五、实现
六、测试
七、性能分析
范例:
1.约瑟夫环
#defineNULL0
typedefstructNode
{
intbianhao;
intmima;
structNode*next;
}Node;
Node*CreatFromTail(intn)
Node*l,*r,*s;
inti,mima;
l=(Node*)malloc(sizeof(Node));
l->
next=NULL;
r=l;
printf("
inputothermima\n"
);
for(i=1;
i<
=n;
i++)
{
scanf("
%d"
&
mima);
s=(Node*)malloc(sizeof(Node));
s->
bianhao=i;
mima=mima;
r->
next=s;
r=s;
}
next=l->
next;
returnl;
}
DeleNode(intm,intn,Node*l)
inti,j;
Node*p,*q;
p=l;
i=1;
while(i<
=n)
for(j=1;
j<
=m-1;
j++)p=p->
q=p->
p->
next=q->
chuduidrenshi%d,qimimashi%d\n"
q->
bianhao,q->
i++;
m=q->
mima;
free(q);
return;
main()
Node*l;
intm,n;
inputnumberofpeopleandthefirstmima\n"
%d,%d"
n,&
m);
l=CreatFromTail(n);
DeleNode(m,n,l);
2.回文判断
方法1:
#include"
stdio.h"
chara[100],c;
intlen;
inti,j,top;
i=0;
while((c=getchar())!
='
@'
)
a[i]=c;
for(j=0;
i;
j++)
%c"
a[j]);
top=i-1;
j=0;
while(top>
=0)
if(a[top]!
=a[j])
isnot"
top--;
j++;
is"
方法2:
#defineTRUE1
#defineFALSE0
#definestacksize100
#definequeuesize100
typedefstruct
charelem[queuesize];
intfront,rear;
}sequeue;
charelem[stacksize];
inttop;
}seqstack;
intEnterQueue(sequeue*q,charx)
if((q->
rear+1)%queuesize==q->
front)return(FALSE);
q->
elem[q->
rear]=x;
rear=(q->
rear+1)%queuesize;
return(TRUE);
chardelete(sequeue*q)
charx;
if(q->
rear==q->
x=q->
front];
front=(q->
front+1)%queuesize;
return(x);
intpush(seqstack*s,charx)
if(s->
top==stacksize-1)return(FALSE);
top++;
elem[s->
top]=x;
charpop(seqstack*s)
top==-1)return(FALSE);
else
x=s->
top];
top--;
charc;
intlen1=0,len2=0;
seqstack*s;
sequeue*q;
charx1,x2;
q=(sequeue*)malloc(sizeof(sequeue));
front=q->
rear=0;
&
'
EnterQueue(q,c);
len1++;
s=(seqstack*)malloc(sizeof(seqstack));
top=-1;
push(s,c);
len2++;
if(len1!
=len2)printf("
while(s->
top>
x1=pop(s);
x2=delete(q);
if(x1!
=x2){printf("
3.串操作(92页实习题1)
chars[100],t[100],r[100],c;
inti,j,k,m,len1,len2,len3;
gets(s);
gets(t);
len1=0;
while(s[len1]!
\0'
)len1++;
len2=0;
while(t[len2]!
)len2++;
len3=0;
k=0;
len1)
while((j<
len2)&
(s[i]!
=t[j]))
if(j>
=len2)
r[len3]=s[i];
m=0;
while((m<
len3)&
r[m]!
=r[len3])m++;
if(m==len3)printf("
%czaiszhongshoucichuxiandeweizhishi%d\n"
r[len3],i);
len3++;
for(k=0;
k<
len3;
k++)
r[k]);
string.h"
#defineMaxlen100
typedefstruct{
charch[Maxlen];
}SString;
concat(SString*s,SStringt)
inti,flag;
if(s->
len+t.len<
=Maxlen)
for(i=s->
len;
s->
len+t.len;
ch[i]=t.ch[i-s->
len];
len+=t.len;
flag=1;
elseif(s->
len<
Maxlen)
Maxlen;
len=Maxlen;
flag=0;
elseflag=0;
return(flag);
len(SStrings)
return(s.len);
SubString(SString*sub,SStrings,intpos,intlen)
inti;
if(pos<
0||pos>
s.len||len<
1||len>
s.len-pos)
sub->
len=0;
return(0);
for(i=0;
ch[i]=s.ch[i+pos];
ch[i]='
;
len=len;
return1;
equal(SStrings,SStringt)
if(s.len!
=t.len)return0;
s.len&
t.len;
if(s.ch[i]!
=t.ch[i])return0;
StrIndex(SStrings,intpos,SStringt)
if(t.len==0)return0;
i=pos;
t.len)
if(s.ch[i]==t.ch[j]){i++;
j++;
else{i=i-j+1;
j=0;
=t.len)return(i-j);
elsereturn0;
SStrings,t,x,r={"
"
0};
SString*sub1,*sub2,*sub3;
inti,j,k;
sub1=(SString*)malloc(sizeof(SString));
sub2=(SString*)malloc(sizeof(SString));
sub3=(SString*)malloc(sizeof(SString));
gets(s.ch);
s.len=strlen(s.ch);
gets(t.ch);
t.len=strlen(t.ch);
/*SubString(sub1,s,1,1);
c