链表解决约瑟夫
程序代码:
#include <stdio.h> #define N 13 struct student { int num; struct student *next; }stu[N+1]; void main() { struct student stu[N+1]; struct student *p=stu; int i,count; for(i=1;i<=N;i++) { if(stu[i].num==13) stu[i].next=&stu[1]; else stu[i].next=&stu[i+1]; stu[i].num=i; } for(count=0;count<N-1;count++) //退出人数小于12个人的时候执行循环; { i=1; while(i!=3) { p=p->next; if(p->num!=0) i++; } p->num=0; p=p->next; } printf("\n The last one is:\n"); for(i=1;i<=N;i++) if(stu[i].num) printf("%d\n",stu[i].num); }
我是照着书上例子敲的,vc6.0没检查出错误,可就是运行不出结果。
再次声明:指针我不是很清楚,麻烦各位大侠讲解的时候,详细点
题目是:13个人报数,到3出局