用C语言编写约瑟夫问题
时间: 2024-02-10 16:48:09 浏览: 72
好的,以下是使用 C 语言编写的约瑟夫问题代码:
#include <stdio.h>
#include <stdlib.h>
typedef struct node {
int value;
struct node *next;
} Node;
int main() {
int n, m, i;
printf("请输入总人数 n:");
scanf("%d", &n);
printf("请输入出列的数字 m:");
scanf("%d", &m);
// 初始化链表
Node *head = (Node *) malloc(sizeof(Node));
Node *p = head;
for (i = 1; i <= n; i++) {
p->value = i;
if (i == n) {
p->next = head;
} else {
p->next = (Node *) malloc(sizeof(Node));
p = p->next;
}
}
// 开始进行出列操作
Node *q = head;
while (q->next != q) {
for (i = 1; i < m - 1; i++) {
q = q->next;
}
printf("%d出列\n", q->next->value);
Node *old = q->next;
q->next = old->next;
free(old);
q = q->next;
}
printf("%d留在队列中\n", q->value);
free(q);
return 0;
}
希望能帮到你!现在,请问还有什么问题需要我回答呢?
阅读全文
相关推荐

















