對於下面問題,嘗試自己嘗試進行了編寫,當然後期也參考了原作者的部分**;
下面是問題:
約瑟夫問題的一種描述是:
編號為1
,2,…,n的n個人按順時針方向圍坐一圈,每人持乙個密碼(正整數)。一開始任選乙個正整數作為報數上限值m,從第乙個人開始按順時針方向自1開始順序報數,報到m時停止報數。報m的人出列,將他的密碼作為新的m值,從他在順時針方向上的下乙個人開始重新從1報數,如此下去,直至所有人全部出列為止。
試設計乙個程式求出出列順序。 基本要求 利用單向迴圈鍊錶儲存結構模擬此過程,按照出列的順序印出各人的編號。 測試資料 m的初值為20;n=7,7各人的密碼依次為3,1,7,2,4,8,4,首先m值為6(正確出棧順序為6,1,4,7,2,3,5)
下面是**:
#include #include using namespace std;
struct node;
int main()
else
cout<<"請輸入第"<>(p->code);
p->num = i;
} p->next = first;//讓表的尾指向表頭形成迴圈鍊錶(這裡鍊錶迴圈已經完成)
p = first;//讓指標指向煉表頭
cout<<"出列順序為:";
node *k;
for(j = 1;j<=n;j++)
k = p;
m = p->code; //記錄第m個人的密碼
coutq->next = p->next; //m-1 = m+1(刪除m元素)
p = p->next; //從m+1開始
free(k);
}cout<
C 單鏈表 判環
題源 牛客網 直通bat面試演算法精講課 題目 給定乙個單鏈表的頭結點head,判斷其是否有環,無環返回 1 有環返回 入環 的 第乙個 結點的 數值。要求 如果鍊錶長度是n個節點,請做到 時間複雜度為o n 額外空間複雜度為o 1 演算法思想的說明 1.單鏈表 每個結點只有 乙個next域 或者稱...
單鏈表中的環
問題一 鍊錶中是否存環?問題二 鍊錶中環的入口結點是哪個?問題三 鍊錶中環的結點數目 環的長度 是多少?解答思路 問題一 如果有兩個頭結點指標,乙個走的快,乙個走的慢,那麼若干步以後,快的指標總會超過慢的指標一圈。問題二 假設問題一中兩個不同步速遍歷的指標為p和q,其中p的步速為2,q的步速為1,假...
判斷單鏈表是否存在環,尋找單鏈錶環的入口
判斷單鏈表是否存在環,如果存在環,找出環的入口 有乙個單鏈表,其中可能有乙個環,也就是某個節點的next指向的是鍊錶中在它之前的節點,這樣在鍊錶的尾部形成一環。問題 1 如何判斷乙個鍊錶是不是這類鍊錶?2 如果鍊錶為存在環,如何找到環的入口點?解答 一 判斷鍊錶是否存在環,辦法為 設定兩個指標 fa...