迴圈鍊錶 約瑟夫問題(C )

2021-05-25 21:52:34 字數 821 閱讀 6913

#include

using namespace std;

const maxsize=10;

class node

;class josephus

;void josephus::init()

else

}bool josephus::empty()

void josephus::insert()

elem[n-1].datacode =n;

elem[n-1].next =&elem[0];

pcurrent=&elem[s-1]//迴圈鍊錶構造完成

}if(*(&pcurrent)<1 || *(&pcurrent)>length+1)

elem=newbase;}}

void josephus::joseph(int n,int m,int s)

//設上乙個節點

if(1==s)

else

//設定計數的初始值

i=0;

//迴圈的終止條件是pcurrent指向自己

while(pcurrent->next!=pcurrent)

ppriv=pcurrent;

pcurrent=ppriv->next;

}//迴圈終止後,儲存勝利者編號,然後釋放記憶體

win=pcurrent->datacode;

delete [n]elem;

return win;

}int main(void)

{josephus a;

a.joseph(10,8,1);

return 0;

迴圈鍊錶 約瑟夫問題

設編號分別為 1,2,n的n個人圍坐一圈。約定序號為k 1 k n 的人從1開始計數,數到m的那個人出列,他的下一位又從1開始計數,數到m的那個人又出列,依次類推,直到所有人出列為止。演算法思路 1 先建立乙個有n個結點的單迴圈鍊錶,編號從1到n,代表n個人。2 找到第k個結點,即第乙個開始報數的人...

(迴圈鍊錶)約瑟夫問題

time limit 1000 ms memory limit 65536 kib submit statistic n個人想玩殘酷的死亡遊戲,遊戲規則如下 n個人進行編號,分別從1到n,排成乙個圈,順時針從1開始數到m,數到m的人被殺,剩下的人繼續遊戲,活到最後的乙個人是勝利者。請輸出最後乙個人的...

迴圈鍊錶 約瑟夫問題

n個人想玩殘酷的死亡遊戲,遊戲規則如下 n個人進行編號,分別從1到n,排成乙個圈,順時針從1開始數到m,數到m的人被殺,剩下的人繼續遊戲,活到最後的乙個人是勝利者。請輸出最後乙個人的編號。input 輸入n和m值。output 輸出勝利者的編號。struct st cr int n 建立迴圈鍊錶 t...