亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

作業社區

探索學習新天地,共享知識資源!

0 提交作業
0 布置作業
0 滿分作業
得分 100
討論題

浪潮君 的學生作業:

#include #include // ============================== // 結構體定義:單向鏈表節點結構 // ============================== typedef struct Node { int id; // 當前人的編號 struct Node* next; // 指向下一個人的指針 } Node; // ===================================================== // 函數:創建一個長度為 n 的單向循環鏈表(不帶頭結點) // 返回值:指向第一個節點(編號為 1)的指針 // ===================================================== Node* create_circle(int n) { Node *head = NULL, *prev = NULL; for (int i = 1; i id = i; // 設置編號 node->next = NULL; // 初始化 next if (!head) { head = node; // 第一個節點作為頭指針 } else { prev->next = node; // 前一個節點指向當前節點 } prev = node; // 更新 prev 指針 } prev->next = head; // 構成循環鏈表(最后一個節點指向頭節點) return head; } // ===================================================== // 函數:實現約瑟夫問題出列邏輯 // 參數: // n - 總人數 // k - 從第幾個人開始數 // m - 每次報數到第幾個人出列 // ===================================================== void josephus(int n, int k, int m) { Node* head = create_circle(n); // 創建循環鏈表 Node* prev = head; // 找到起始編號為 k 的節點:prev->next->id == k while (prev->next->id != k) { prev = prev->next; } Node* curr = prev->next; // curr 指向編號為 k 的節點 printf("出列順序: "); while (n--) { // 從 curr 開始數 m-1 個,找到第 m 個出列者 for (int i = 1; i < m; i++) { prev = curr; curr = curr->next; } // 打印出列編號 printf("%d ", curr->id); // 刪除 curr 節點(即出列的人) prev->next = curr->next; // 斷開當前節點 free(curr); // 釋放內存 curr = prev->next; // 繼續從下一個人開始數 } printf("\n"); } // ================ // 程序主函數入口 // ================ int main() { int n = 8; // 總人數 int k = 3; // 從編號 3 開始數 int m = 4; // 數到第 4 個出列 josephus(n, k, m); // 執行約瑟夫出列過程 return 0; }

首頁上一頁1234567下一頁尾頁
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號