實驗2 約瑟夫環 迴圈鍊錶的應用

2021-08-28 08:52:21 字數 1168 閱讀 6579

維基百科: 約瑟夫環問題

實驗一迴圈鍊錶的應用

一、實驗目的與基本要求

掌握資料結構中的迴圈鍊錶的一些基本概念。

二.實驗內容

通過迴圈鍊錶實現約瑟夫環

例:   41個人從1開始報數,報到3的出列,則最後剩下的是31號

**如下:

#include#include#includeusing namespace std;

typedef struct node

linklist;

linklist *creat(int n)

p->next = head; //使煉表尾指向煉表頭 形成迴圈鍊錶

return head;

}void fun(linklist *l, int pos, int cnt)

printf("%5d", p->num);

s = p;

q->next = p->next;

p = p->next; //使p指向新的起點

free(s);//free()與malloc()函式配對使用,釋放malloc函式申請的動態記憶體

}printf("%5d\n", p->num);

}int main()

更加簡單點的寫法:

#include#includeusing namespace std;

struct node

;node *creat(int n)

p->next = head;

return head;

}void fun(node *l, int pos, int cnt)

printf("%5d", p->num);

s = p;

q->next = p->next;

p = p->next;

}printf("%5d\n", p->num);

}int main()

迴圈鍊錶應用 約瑟夫環

約瑟夫環是乙個數學的應用問題 已知n個人 以編號1,2,3.n分別表示 圍坐在一張圓桌周圍。從編號為k的人開始報數,數到m的那個人出列 他的下乙個人又從1開始報數,數到m的那個人又出列 依此規律重複下去,直到圓桌周圍的人全部出列。include includetypedef struct node ...

迴圈鍊錶的應用 約瑟夫環

約瑟夫環 時 限 500 ms 記憶體限制 2000 k 總時限 3000 ms 描述 約瑟夫環 編號為1,2,3,n的n個人按順時針方向圍坐一圈。任選乙個正整數作為報數上限m,從第乙個人開始按順時針方向自1開始順序報數,報到m時停止報數。報m的人出列,從他在順時針方向上的下乙個人開始重新從1報數,...

迴圈鍊錶的應用 約瑟夫環

題目 報數,共n個人 從1編號,依次報號,報到m出隊,再接著從下乙個人開始數,依次輸出出隊的人。include include typedef struct n node node creat int n 建立n個節點的鍊錶 p next head return head 刪除報號為m的 void ...