程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 數據結構(C#):循環鏈表(2)

數據結構(C#):循環鏈表(2)

編輯:關於C語言

2.用循環鏈表解決約瑟夫問題

問題描述:N個人圍成圓圈,從1開始報數,到第M個人令其出列,然後下一個人繼續從1開始報數,到 第M個人令其出列,如此下去,直到只剩一個人為止。顯示最後一個人為剩者。

代碼:

const int M = 9;
const int N = 7;
CircularlyLinkedList<int> list = new CircularlyLinkedList<int>();

//填充循環鏈表
for (int i = 1; i < M; i++)
{
   list.Add(i);
}

int tempCounter = 0;

while (list.Count > 1)
{
   tempCounter++;
   list.GetPrevious();

   // 選中者出列
   if (tempCounter == N)
   {
     tempCounter = 0;
     Console.WriteLine(list.GetCurrent() + " 出列!");
     list.RemoveAt(list.CurrentIndex);
   }
}

Console.WriteLine(list.GetNext() + " 為剩者");

運行結果:

2 出列!
3 出列!
1 出列!
7 出列!
4 出列!
8 出列!
6 出列!
5 為剩者
如果把上面高亮顯示的語句改為:list.GetNext();

運行結果變為:

7 出列!
6 出列!
8 出列!
2 出列!
5 出列!
1 出列!
3 出列!
4 為剩者

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved