# include<stdio.h>
# include<stdlib.h>
typedef struct node
{
char data;
struct node *next;
}Linklist;
Linklist *Initlist(Linklist *L)
{
L=(Linklist *)malloc(sizeof(Linklist));
L->next=NULL;
return L;
}
Linklist *Creatlist(Linklist *L,int Num)
{
Linklist *p,*r;
int i=0;
r=L;
while(i<Num)
{
p=(Linklist *)malloc(sizeof(Linklist));
p->next=NULL;
p->data='*';
r->next=p;
r=r->next;
i++;
}
return L;
}
void output(Linklist *L,int Num)
{
Linklist *p;
int i=0;
p=L;
while(i<Num)
{
p=p->next;
printf("%2c",p->data);
i++;
}
}
void FZ1(Linklist *L,int Num)
{
Linklist *r,*p,*s;
r=L;
p=L;
while(r->next!=NULL)
{
r=r->next;
}
r->next=L->next;
output(L,Num);
printf("/n");
for(int i=0;i<Num;i++)
{
p=p->next;
s=p;
for(int j=0;j<Num-2;j++)
{
if(s->data=='*') s->data='0';
else s->data='*';
s=s->next;
}
output(L,Num);
printf("/n");
}
printf("总共翻了%d次/n",Num);
}
void FZ2(Linklist *L,int Num)
{
Linklist *r,*p,*s;
r=L;
p=L;
while(r->next!=NULL)
{
r=r->next;
}
r->next=L->next;
output(L,Num);
printf("/n");
for(int i=0;i<Num;i++)
{
p=p->next;
s=p;
for(int j=0;j<Num-1;j++)
{
if(s->data=='*') s->data='0';
else s->data='*';
s=s->next;
}
output(L,Num);
printf("/n");
}
printf("总共翻了%d次/n",Num);
}
main()
{
int Num;
Linklist *L;
L=Initlist(L);
printf("请输入总共要翻的硬币数:");
while(scanf("%d",&Num)!=EOF)
{
L=Creatlist(L,Num);
if(Num%2==0) FZ2(L,Num);
if(Num%2==1) FZ1(L,Num);
printf("请输入总共要翻的硬币数:");
}
system("pause");
}
归纳算法翻硬币代码
最新推荐文章于 2023-03-25 23:56:09 发布