码迷,mamicode.com
首页 > 其他好文 > 详细

单链表约瑟夫环

时间:2015-04-16 17:29:42      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:

1.已知n个人(n>=1)围坐一圆桌周围,从1开始顺序编号。从序号为1的人开始报数,顺时针数到m的那个人出列。他的下一个人又从1开始报数,数到m的那个人又出列。依此规则重复下去,直到所有人全部出列。请问最后一个出列的人的编号。

 

Node* RemoveList(Node* head, int len)

{

  Node* pPre=NULL;

  

  //存储被删除节点的前驱节点

  Node* pCur=tail; 

  

  //从第K个人开始报数

  for(int i=0; i<K; i++)

  {

    pPre=pCur;

    pCur=pPre->next;

  }

 

  while(pCur->next!=pCur)

  {

    //数到m的人出列

    for(int i=1; i<m; i++)

    {

      pPre=pCur;

      pCur=pPre->next;

    }

    pPre->next=pCur->next;

    printf("被删除的元素:%4d ",pCur->data);

    free(pCur);

    pCur=pPre->next;    

  }

}

 

解决方案:

使用循环链表;进而转化为循环链表的节点删除。

 

单链表约瑟夫环

标签:

原文地址:http://www.cnblogs.com/hj-blog/p/4432414.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!