使用C语言编写一个约瑟夫环
时间: 2023-07-20 07:29:24 浏览: 97
好的,下面是使用C语言编写的约瑟夫环的代码:
```c
#include <stdio.h>
#include <stdlib.h>
struct Node {
int data;
struct Node* next;
};
int getSurvivor(int n, int k) {
struct Node* head = NULL;
struct Node* prev = NULL;
for (int i = 1; i <= n; i++) {
struct Node* node = (struct Node*)malloc(sizeof(struct Node));
node->data = i;
if (head == NULL) {
head = node;
} else {
prev->next = node;
}
prev = node;
}
prev->next = head;
struct Node* curr = head;
while (curr->next != curr) {
for (int i = 1; i < k; i++) {
curr = curr->next;
}
struct Node* temp = curr->next;
curr->next = temp->next;
free(temp);
}
int survivor = curr->data;
free(curr);
return survivor;
}
int main() {
int n = 7;
int k = 3;
int survivor = getSurvivor(n, k);
printf("The survivor is %d\n", survivor);
return 0;
}
```
这个程序会输出在约瑟夫环中剩下的最后一个人的编号。在这个例子中,我们有7个人,每次要跳过3个人,最后留下的人的编号为4。
阅读全文
相关推荐

















