永发信息网

【约瑟夫问题】约瑟夫相关问题(C语言)2)反Josephu环问题...

答案:2  悬赏:70  手机版
解决时间 2021-02-06 17:55
【约瑟夫问题】约瑟夫相关问题(C语言)2)反Josephu环问题...
最佳答案
【答案】 反Josephu环问题
  #include
  #include
  typedef struct
  {
   struct T_LIST* pre;
   struct T_LIST* next;
  } T_LIST;
  T_LIST* GetPreOne(T_LIST* ThisOne, int m)
  {
   for (; m > 1; m--)
   {
   ThisOne = ThisOne->pre;
   }
   return ThisOne;
  }
  int main()
  {
   T_LIST* head, //当前
   * pLast,//最后一个人
   * tem, *tem2; //临时交换指针
   int n,//总人数
   m,//循环长度
   x,//最后人
   k,
   i;//当前人数
   printf(输入相关数据(n,m,x):\n);
   scanf(%d,%d,%d, &n, &m, &x);
   pLast = malloc(sizeof(T_LIST));
   head = malloc(sizeof(T_LIST));
   head->pre = head->next = pLast;
   pLast->pre = pLast->next = head;
   printf(n=%d,m=%d,x=%d\n,n,m,x);
   i = 2;
   for (; i pre;//临时指针指向前一个节点
   head->pre = tem2 = malloc(sizeof(T_LIST)); //建立前一局被淘汰者,并构建本局数1的人pre
   tem->next = head->pre;//临时节点修复
   tem2->next = head;//上局淘汰者next修复
   tem2->pre = tem;//上局淘汰者pre修复
   head = head->pre;//指向被淘汰者,准备下轮循环
   }
   //脱离循环后head指向第一个被淘汰者
   //调用GetPreOne,是head指向数1的人
   head = GetPreOne(head, m);
   while (1)
   {
   if (pLast == head)
   {
   break;
   }
   pLast = pLast->next;
   x++;
   }
   k = x % n ;
   if(k==0)
   k=41;
   printf(k = %d\n, k);
   //收尾,释放内存
   while(pLast->next != head)
   {
   pLast = pLast->next;
   free(pLast->pre);
   }
   free(pLast);
   free(head);
   return 0;
  }
  =============================================
  Josephu环问题的变形(p1012)
  #include
  #include
  int fun(char* data, int k, int m);
  int main()
  {
   int k, m;
   char* data;
   printf(Please input k:\n);
   scanf(%d, &k);
   data = malloc(2 * k);
   for (m = k + 1;; m++)
   {
   if (fun(data, k, m))
   break;
   }
   printf(m=%d\n, m);
   free(data);
   return 0;
  }
  int fun(char* data, int k, int m)
  {
   int i = 0, //数数时的位置
   j = 0, //已经杀死的人数
   t = 0; //数数时的累加器
   for (; i
全部回答
哦,回答的不错
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
金典婚庆礼仪庆典中心地址有知道的么?有点事
后背中间疼痛什么原因
今天派出所来我网吧检查 发现没有实名登记和
因公殉职得到的补偿金,配偶,父母,子女各是多
宝塔山地址有知道的么?有点事想过去
刚开的奶粉打团怎么办
知名度精品时装在哪里啊,我有事要去这个地方
征友是什么意思
solidworks怎样检查装配体的孔与孔是否对齐,
被称为“中国文化使者”的器具是什么
为什么手抬起来的时候会感到酸痛
怎么样查看电脑有没有独立声卡,详细点,我菜
兴才路/天顺街(路口)怎么去啊,有知道地址的
血像高是怎么回事?还有高烧不退现象。
海川化工论坛怎么注册
推荐资讯
C语言 求1+2+...+n=?Description给定一个n,求
蒲公英电动车
月桂氮酮10毫升加中药和75的酒精多少毫升还要
和尚们天天念的佛教的经文应该也算是一种心理
卫华小学我想知道这个在什么地方
新昌到舟山怎么去啊?完了完了,要去那边读书
景华酒楼土菜馆地址在什么地方,想过去办事
剑网3 新手冰心七秀是走新妆流还是玉素流
五华小米公寓有没有五证齐全
根据银监会2012年颁布的《商业银行资本管理办
彩票销售店(辽宁省葫芦岛市连山区)地址在哪,
怎样知道心脏好不好
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?