循环链表实现约瑟夫问题

    xiaoxiao2021-03-25  59

    #include <iostream> using namespace std; struct joseph { int i; joseph *next; }*rear; void joseph_math(int n, int k); int main() { int n,k; cin >> n >> k; joseph_math(n, k); return 0; } void joseph_math(int n, int k) { if (n >= 1) { joseph *rear = new joseph; rear->i = 1; rear->next = rear; joseph *p; for (int i = 1; i < n; i++)//构建循环链表 { p = new joseph; p->i = i + 1; joseph *tmp = rear->next; rear->next = p; p->next = tmp; rear = p; } while (rear->next->i != rear->i) { for (int i = 1; i < k; i++) { rear = rear->next; } cout << rear->next->i << endl; joseph *tem = rear->next->next; delete rear->next; rear->next = tem; } cout << rear->i << endl; delete rear; rear = nullptr; } }
    转载请注明原文地址: https://ju.6miu.com/read-38571.html

    最新回复(0)