的人出圈,直到一个人留下来。这个问题可以用循环链表的形式来解决。
就将该人的出圈标志设为true,并将该节点从链表中删除。重复这个过程,直到只剩下一个人为止。
clude
//定义结构体表示每个人的信息ode {tum; //编号
bool out; //是否出圈odeext;
} Node;
//创建循环链表t) {
Node head, p, q;alloc(sizeof(Node));um = 1;
head->out = false;
q = head;t; i++) {alloc(sizeof(Node));um = i;
p->out = false;ext = p;
q = p;
}ext = head; head;
//解决约瑟夫问题t) {
Node p = head, q = head;tt = 0;ext != p) {t++;t) {
p->out = true;tfum);extext;
free(p);ext;t = 0;
} else {
q = p;ext;
}
}tfum);
//主函数tain() {t;tf");f););); 0;
ain,然后调用createList函数创建循环链表,调用josephus函数解决约瑟夫问题。