Josephus問題 用迴圈鍊錶解決

2021-07-09 06:46:26 字數 561 閱讀 5866

1.

剛剛學鍊錶,因此這裡特地用迴圈鍊錶解決此問題。

2.具體程式如下:

//joseph環問題:n個人排隊,以m報數,直到只剩1人,輸出此人編號

//用迴圈鍊錶解決問題

#include#includeint n,m;

int i,k;

//建立結構體

struct student

;void main()

else}}

p1=head;

p2=head;

for(k=0;knext;

}printf("number=%d\n",p1->number);

p2->next=p1->next;

head=p1->next;

p1=head;

p2=head;

k++;

}printf("end number=%d",head->number);

}

3.單鏈表和迴圈鍊錶的區別就在於最後乙個結點->head

本質也是對結構體的運用

迴圈鍊錶Josephus問題(c,cpp

問題描述 設有n個人圍坐在乙個圓桌周圍,現從第s個人開始報數,數到第m個的人出列,然後從出列的下乙個人重新開始報數,數到第m個的人又出列,如此反覆直到所有的人出列為止。josephus.c 1 include 2 include 3 typedef struct lnode 4lnode,linkl...

迴圈鍊錶應用 Josephus

include using namespace std typedef int elemtype struct nodetype void josephus int n,int m,int k p data n p next head p head while p data p next data ...

鍊錶應用 Josephus問題

據說著名猶太歷史學家 josephus有過以下的故事 在羅馬人占領喬塔帕特後,39個猶太人與josephus及他的朋友躲到乙個洞中,39個猶太人決定寧願死也不要被人抓到,於是決定了乙個自殺方式 41個人排成乙個圓圈,由第1個人開始報數,每報數到第3人該人就必須自殺,然後再由下乙個重新報數,直到所有人...