約瑟夫迴圈

2021-06-06 07:46:49 字數 1240 閱讀 9072

題目:n個數字(0,1,…,n-1)形成乙個圓圈,從數字0開始,每次從這個圓圈中刪除第m個數字(第乙個為當前數字本身,第二個為當前數字的下乙個數字)。當乙個數字刪除後,從被刪除數字的下乙個繼續刪除第m個數字。求出在這個圓圈中剩下的最後乙個數字。

思路:建立乙個迴圈鍊錶,每次走m步刪除乙個節點,最後剩下乙個

原始碼:

[html]view plain

copy

#include 

<

iostream.h

>

#include "malloc.h"  

struct node  

;  node *createlist(int a,int n)    q

=head

;  while(q->

next!=null)  q=

q->

next;  

q->

next

=head

;  return head;  

}  void display(node *head)  

}  void deletenode(node *head,int m)  

p->

next=q

->

next;//刪除節點   

cout<

<

"delete node is:"

<

<

q->

data

<

<

endl

;   

}  cout<

<

"last node is:"

<

<

p->

data

<

<

endl

;   

}  int main()  

;  node *head;  

head

=createlist

(a,9);  

display(head);  

//cout<

<

head-

>

data;  

deletenode(head,2);  

return 0;  

}  

約瑟夫迴圈 改

此題根據約瑟夫問題改編。首先定義乙個 內部類node,基於node來實現各種操作。node 有兩個資料域來記錄密碼與位置,乙個指標域來指向下一條。這樣就形成了乙個單向鏈。當尾的下一條為頭時,就形成了單向環。然後定義成員函式head 和 rear 用於指向鏈環的頭和尾,以及記錄元素個數的size。然後...

迴圈鍊錶解決約瑟夫迴圈問題

最近開始複習資料結構,今天手寫了乙個約瑟夫迴圈問題。首尾相連的鍊錶 head last tail tail next head 建立迴圈鍊錶和建立普通鍊錶方法差不多,只需要首尾相連即可 已知 n 個人 以編號1,2,3,n分別表示 圍坐在一張圓桌周圍,從編號為 k 的人開始順時針報數,數到 m 的那...

迴圈鍊錶(約瑟夫環)

約瑟夫環是乙個數學的應用問題 已知n個人 以編號1,2,3.n分別表示 圍坐在一張圓桌周圍。從編號為k的人開始報數,數到m的那個人出列 他的下乙個人又從1開始報數,數到m的那個人又出列 依此規律重複下去,直到圓桌周圍的人全部出列。要通過輸入n,m,k三個正整數,來求出列的序列。這個問題採用的是典型的...