<img src="http://imgsrc.baidu.com/forum/pic/item/69a8f736afc37931be5b8692ebc4b74543a91135.jpg" alt="" />
#include<stdio.h>
#include<stdlib.h>
#define N 41
#define M 3
#define START 0
struct LinkList{
int data;
struct LinkList* link;
}LNode[N];
typedef struct LinkList Linklist;
typedef LinkList* link;
int main()
{
int i;
link p;
for(int i=0; i < N; i++){
LNode[i].data = i + 1;
if(i < N-1) LNode[i].link = &LNode[i + 1];
else LNode[i].link = LNode;
}
p = &LNode[START];
while(p -> link != p){
for(int i=1; i< M-1; i++)
p = p->link;
p->link = p->link->link;
printf("第%d人自杀\n",p->link->data);
p = p->link;
}
getchar();
return 0;
}
c语言版
#include<stdio.h>
#include<stdlib.h>
#define N 41
#define M 3
#define START 0
typedef struct LinkList{
int data;
struct LinkList* link;
}LNode;
int main()
{
int i;
LNode LNode[N] , *p;
for(i=0; i < N; i++){
LNode[i].data = i + 1;
if(i < N-1) LNode[i].link = &LNode[i + 1];
else LNode[i].link = LNode;
}
p = &LNode[START];
while(p -> link != p){
for(i=1; i< M-1; i++)
p = p->link;
p->link = p->link->link;
printf("第%d人自杀\n",p->link->data);
p = p->link;
}
getchar();
return 0;
}