关于循环链表的故事: 在罗马人占领乔塔帕特后,39个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人決定宁愿死也不要被敌人到,于是决定了一个自杀方式,41 个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必須自杀,然后再由下一 个重新报数,直到所有人都自杀身亡为止。 然而Josephus和他的朋友並不想遵从,Josephus要他的朋友先假裝遵从,他将朋友与自己安排在第16个与第31个位置,于是逃过了这场死亡游戏。
程序实现:
#include#includetypedef struct node * link;struct node {int item; link next;};/*=============================*/link NODE (int item, link in){ link p = malloc(sizeof(*p)); p->item = item; p->next= in; return p;}
/*============================*/int main(int argc, char *argv[]){ int i; int n = atoi(argv[1]); int m = atoi(argv[2]); link t = NODE(1,NULL); t->next = t; for(i = 2; i t = t->next = NODE(i,t->next); /* t->next = NODE(i,t->next) * t = t->next; * */ while(t->next != t) // 直到只一个结点时 { for(i = 1; i t = ...
>> 阅读全文