数据结构 单链表实现约瑟夫环

单链表实现约瑟夫环:
分析:首先我们应该了解什么事约瑟夫环:
约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。通常解决这类问题时我们把编号从0~n-1,最后 结果+1即为原问题的解。

代码:

{
 List Temp = Head;
 while (Temp->Next)//成环
  Temp = Temp->Next;
 Temp->Next = Head;
 while (Head->Next != Head)
 {
  int count = k;
  while (--count)//循环count-1次
   Head = Head->Next;
  Temp = Head->Next;
  Head->Data = Temp->Data;
  Head->Next = Temp->Next;
  free(Temp);
 }
 return Head;
}

你可能感兴趣的:(数据结构)