当前位置: 代码迷 >> C语言 >> 这问题在那里啊
  详细解决方案

这问题在那里啊

热度:306   发布时间:2007-05-31 19:18:59.0
这问题在那里啊

#include<stdio.h>
#include<malloc.h>
struct node
{ int data;
struct node *next;
};
struct node *createlink(int n)
{struct node *r,*q,*p;
int i,a;
p=(struct node *)malloc(sizeof(struct node));
scanf("%d",&a);
p->data=a;
r=q=p;
for(i=0;i<n-1;i++)
{q=(struct node *)malloc(sizeof(struct node));
scanf("%d",&a);
q->data=a;
p->next=q;
p=q;
}
q->next=r;
return r;
}
main()
{ struct node *r,*q,*p;
int n,m,j;
scanf("%d",&n);
r=createlink(n);
scanf("%d",&m);
while(r->next!=r)
{ for(j=0;j<m-1;j++)
{r=r->next;
p=r->next;
printf("->%d",p->data);
r->next=p->next;
r++;}
}
if(r->next==r)
printf("->%d",r->data);
}

让n个人坐成一圈报数 报到m的就退出 输出出列的顺序

搜索更多相关的解决方案: node  struct  int  next  

----------------解决方案--------------------------------------------------------
除了下面红色部分,还需要注意释放内存

#include<stdio.h>
#include<malloc.h>
struct node
{ int data;
struct node *next;
};
struct node *createlink(int n)
{struct node *r,*q,*p;
int i,a=1;
p=(struct node *)malloc(sizeof(struct node));
//scanf("%d",&a);
p->data=a;
r=q=p;
for(i=0;i<n-1;i++)
{q=(struct node *)malloc(sizeof(struct node));
a++;
q->data=a;
p->next=q;
p=q;
}
q->next=r;
return r;
}
main()
{ struct node *r,*q,*p;
int n,m,j;
scanf("%d",&n);
r=createlink(n);
scanf("%d",&m);
while(r->next!=r)
{ for(j=0;j<m-1;j++)
{r=r->next;
p=r->next;
printf("->%d",p->data);
r->next=p->next;
r=r->next;}
}
if(r->next==r)
printf("->%d",r->data);
}
----------------解决方案--------------------------------------------------------
  相关解决方案