約瑟夫問題 鍊錶 佇列實現

2021-06-20 05:39:11 字數 1067 閱讀 7164

和之前說的猴子選大王一樣,一共n個人報數,報道m的人出列,之後繼續從1開始報數,直到最後就剩乙個人

之前說了一下陣列的實現方法,其實還有很多實現的方法,這裡說一下鍊錶剔除的方法以及c++佇列函式的實現方法

先說鍊錶實現吧

#include#include#define len sizeof(struct monkey)

struct monkey

;struct monkey*creat(int n)

p2->next=head;/*最後乙個猴子的下乙個又是第乙個猴子,圍成乙個環*/

return head;

}struct monkey *cut(struct monkey*head,int n)

p1=head;

while(n>1)

else

}printf("%d",p1->num);

free(p1);

}int main()

下面說一下佇列實現吧,這裡先給大家介紹一下c++的佇列函式

queuex 定義乙個名字為x的佇列

x.front()   這個佇列的第乙個元素

x.pop()刪除隊首元素

x.pop(*)  往佇列最後插入元素(*代表元素)

下面給出**

#include#include#includeusing namespace std;

#includeint main()

{ int m,n;

int i;

while(scanf("%d%d",&n,&m)!=eof)

{queuemonkey;/*定義在內部每次初始化*/

for(i=0;i1)

{for(i=1;i

鍊錶實現約瑟夫環問題

約瑟夫環 約瑟夫問題 是乙個數學的應用問題 已知n個人 以編號1,2,3.n分別表示 圍坐在一張圓桌周圍。從1開始報數,數到m的那個人出列 他的下乙個人又從1開始報數,數到m的那個人又出列 依此規律重複下去,直到圓桌剩下最後乙個人,求那個人的位置。總體思路 1 建立鍊錶 用尾插法建立 2 當人數大於...

迴圈鍊錶實現約瑟夫問題

高階約瑟夫問題 總結 初學資料結構的迴圈鍊錶,正好利用迴圈鍊錶可以很容易的解決上述問題。include include include typedef int elemtype define len sizeof node define n 41 總人數 41 define m 3 密碼固定為3 t...

佇列實現約瑟夫問題

描述約瑟夫問題 有 只猴子,按順時針方向圍成一圈選大王 編號從 到 從第 號開始報數,一直數到 數到 的猴子退出圈外,剩下的猴子再接著從1開始報數。就這樣,直到圈內只剩下乙隻猴子時,這個猴子就是猴王,程式設計求輸入 後,輸出最後猴王的編號。輸入 每行是用空格分開的兩個整數,第乙個是 n,第二個是 m...