酷代码 AI
菜单
服务商
DeepSeek字节豆包讯飞星火
更多选项

C语言单循环链表实现:20人约瑟夫环问题,报到5出局顺序揭秘!

#include <stdio.h> #include <stdlib.h> typedef struct Node { int num; struct Node* next; } Node; Node* createCircle(int n) { Node* head = (Node*)malloc(sizeof(Node)); head->num = 1; head->next = NULL; Node* current = head; for (int i = 2; i <= n; i++) { Node* newNode = (Node*)malloc(sizeof(Node)); newNode->num = i; newNode->next = head; current->next = newNode; current = newNode; } return head; } void printOutSequence(Node* head, int n, int m) { Node* current = head; Node* prev = NULL; while (n > 0) { for (int i = 1; i < m; i++) { prev = current; current = current->next; } if (prev != NULL) { printf("%d ", current->num); prev->next = current->next; free(current); current = prev->next; } else { printf("%d ", current->num); head = current->next; free(current); current = head; } n--; } } int main() { int n = 20; // 一共有20个人 int m = 5; // 报到5的人出局 Node* head = createCircle(n); printOutSequence(head, n, m); return 0; } ######[AI写代码神器 | 857点数解答 | 2024-07-21 11:10:43]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]