的人出圈,直到一個人留下來。這個問題可以用循環鏈表的形式來解決。
就將該人的出圈標志設為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函數解決約瑟夫問題。