循环列示例(约瑟夫环问题)
#include<stdio.h>
#include<stdlib.h>
typedef struct node* link;
struct node{int item; link next;};
int main()
{
int i,N,M;
scanf("%d%d",&N,&M);
link t=malloc(sizeof *t),x=t;
t->item=1;t->next=t;
for(i=2; i<=N; i++){
x=(x->next=malloc(sizeof *x));
x->item=i; x->next=t;
}
while(x!=x->next){
for(i=1; i<M; i++) x=x->next;
x->next=x->next->next;N--;
}
printf("%d\n",x->item);
return 0;
}
#include<stdlib.h>
typedef struct node* link;
struct node{int item; link next;};
int main()
{
int i,N,M;
scanf("%d%d",&N,&M);
link t=malloc(sizeof *t),x=t;
t->item=1;t->next=t;
for(i=2; i<=N; i++){
x=(x->next=malloc(sizeof *x));
x->item=i; x->next=t;
}
while(x!=x->next){
for(i=1; i<M; i++) x=x->next;
x->next=x->next->next;N--;
}
printf("%d\n",x->item);
return 0;
}
作者:cpoint
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.