Joseph难点
1.先是,大家先来打听一下哪些是Joseph环难点:
讲贰个比较有意思的传说:Joseph是犹太军事的四个老马,在抵御亚特兰洲大学的首义中,他所指点的部队被重创,只剩余残留的阵容40余名,他们皆以钢铁的人,所以不愿投降做叛徒。一堆人核定说要死,所以用风度翩翩种政策来前后相继杀死全数人。
于是约瑟夫建议:每一回由其余两个人一同杀掉一人,而被杀的人的前后相继顺序是由抽签决定的,Joseph有机关地抽到了最后意气风发签,在杀了除去她和剩余那个家伙之外的最后壹位,他劝泰山压顶不弯腰了别的三个没死的人投降了波士顿。
初叶来说就是:
安分守己如下准绳去杀人:
- 全部人围成生机勃勃圈
- 顺时针报数,每便报到3的人将被杀掉
- 被杀掉的人将从房间内被移走
- 接下来从被杀掉的下一人再次报数,继续报3,再消亡,直到剩下一位
那么程序完成为:
链表的定义: 定义为编号就可以 所以data项为int
typedef struct NODE{
struct NODE *next;
int data;
}Node,*Linklist;
是因为是循环,直到倒数一位, 全数能够动用特殊的链表: 循环链表。 当链表中只剩余一个因素后,便以为完事了。 即 L->next = L;
#include <stdio.h>
#include <stdlib.h>
#include "Linklist.h"
void Print_Linklist(Linklist L)
{
Linklist head = L;
printf("List: ");
while(L->next != head)
{
printf("%d ",L->data);
L = L->next;
}
printf("%d ",L->data);
printf("n");
}
int main()
{
int i;
Linklist L;
Linklist head;
Linklist Out;
L = (Node*)malloc(sizeof(Node));
head = L;
L->data = 1;
L->next = head;
for(i=2;i<=41;i++)
{
L->next=(Node*)malloc(sizeof(Node));
L->next->data = i;
L->next->next = head;
L = L->next;
}
Print_Linklist(head);
L = head;
while(L != L->next)
{
for(i=1;i<2;i++)
{
L = L->next;
}
Out = L->next;
printf("%2d号 ----> 自杀!n",Out->data);
L ->next = Out->next;
L = L->next;
free(Out);
}
printf("幸存者是:%d",L->data);
return 0;
}
本文由118kj开奖现场发布于品牌动态,转载请注明出处:Joseph难点
关键词: