維基百科: 約瑟夫環問題
實驗一迴圈鍊錶的應用
一、實驗目的與基本要求
掌握資料結構中的迴圈鍊錶的一些基本概念。
二.實驗內容
通過迴圈鍊錶實現約瑟夫環
例: 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 ...