转载: 约瑟夫环 循环链表 必备「建议收藏」

转载: 约瑟夫环 循环链表 必备

大家好,又见面了,我是全栈君。

http://blog.csdn.net/gggg_ggg/article/details/42965853

  1. /********************************************************************  
  2. created:2015年1月20日 23:06:46     
  3. author: Jackery      
  4. purpose: Joseph problem  
  5. *********************************************************************/    
  6. #include”stdafx.h”  
  7. #include<iostream>  
  8. using namespace std;  
  9.   
  10. typedef struct _Node  
  11. {  
  12.     int data;  
  13.     struct _Node*next;  
  14. } node_t;  
  15.   
  16. typedef struct _Linklist  
  17. {  
  18.     node_t*phead;  
  19.     node_t*ptail;  
  20.     int len;  
  21. }Linklist;  
  22. static node_t*GetNode(int i )//新建并初始化节点  
  23. {  
  24.     node_t*pNode;  
  25.     pNode=new node_t;  
  26.     if(!pNode)  
  27.     {  
  28.         cout <<“内存分配失败” <<endl;  
  29.         exit(-1);  
  30.     }  
  31.     pNode->data=i;  
  32.     pNode->next=NULL;  
  33.     return pNode;  
  34.     delete pNode;  
  35. }  
  36. void init_list(Linklist*plist)//用第一个节点初始化循环单链表  
  37. {  
  38.     node_t*p;  
  39.     p=GetNode(1);  
  40.     //printf(“TheNewNodeis:%d\n”,p->data);//****TEST****  
  41.     plist->phead=p;  
  42.     plist->ptail=p;  
  43.     p->next=plist->phead;  
  44.     plist->len=1;  
  45. }  
  46.   
  47. //把其余数据添加到循环单链表中  
  48. static void Create_List(Linklist*plist,int n)  
  49. {  
  50.     int i=0;  
  51.     node_t*pNew;  
  52.     for(i=2;i<=n;i++)  
  53.     {  
  54.         pNew=GetNode(i);  
  55.         /********TEST********  
  56.         cout <<“The New Node is:” <<pNew->data << endl;  
  57.         ********TEST********/  
  58.         plist->ptail->next=pNew;  
  59.         plist->ptail=pNew;  
  60.         pNew->next=plist->phead;  
  61.         plist->len++;  
  62.     }  
  63. }  
  64. //输出链表内容  
  65. // void Print_List(Linklist*plist)  
  66. // {  
  67. //  node_t*pCur=plist->phead;  
  68. //  do  
  69. //  {  
  70. //      cout << “The “<<  pCur->data <<“person.”  <<endl;  
  71. //      pCur=pCur->next;  
  72. //  }while(pCur!=plist->phead);  
  73. //  cout << “The length of the List “<< plist->len<< endl;;  
  74. // }  
  75.   
  76. //Joseph function implement  
  77. void joseph(Linklist* plist,int m,int k)  
  78. {    
  79.     node_t *pPre=plist->ptail;  
  80.     node_t *pCur=plist->phead;  
  81.     int i,j;  
  82. cout << “出队列的顺序依次为: “<< endl;  
  83.     while(plist->len != 1)  
  84.     {  
  85.         i=0;  
  86.         j=0;  
  87.         while(j<k-1)  
  88.         {  
  89.             pPre=pPre->next;  
  90.             j++;  
  91.         }  
  92.         while(i< m -1)  
  93.         {  
  94.             pPre=pPre->next;  
  95.             i++;  
  96.         }  
  97.         pCur=pPre->next;  
  98.         int temp=pCur->data;  
  99.         cout <<“第 ” << temp << ”  个人 “<< endl ;  
  100.         pPre->next=pCur->next;  
  101.         free(pCur);  
  102.         plist->len–;  
  103.     }  
  104.     cout <<“第 ” << pPre->data << ” 个人” << endl; ;  
  105.     cout << “The last one is:” << pPre->data<< endl;  
  106. }  
  107. int main(int argc, char * argv[])  
  108. {  
  109.     int n=0;  
  110.     cout <<“约瑟夫环长度为 : “<<endl;;  
  111.     cin >> n;  
  112.     int m=0;  
  113.     cout << “每此数到m个时,此人出列”<<endl;  
  114.     int k;  
  115.     cin >> k;  
  116.     cout << “从第k 个开始数” << endl;  
  117.     cin >>m;  
  118.     Linklist pList;  
  119.     init_list(&pList);  
  120.     Create_List(&pList,n);  
  121. //  Print_List(&pList);  
  122.     joseph(&pList,m,k);  
  123.     return 0;  
  124. }  

转载于:https://www.cnblogs.com/eat-too-much/p/6550458.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/108621.html原文链接:https://javaforall.net

(0)
上一篇 2022年3月1日 下午11:00
下一篇 2022年3月2日 上午6:00


相关推荐

  • 时滞电力系统matlab,时滞电力系统稳定性分析

    时滞电力系统matlab,时滞电力系统稳定性分析工程中许多动力系统可由状态变量随时间演化的微分方程来描述。其中相当一部分动力系统的状态变量之间存在时间滞后的现象,即系统的演化趋势不仅依赖于系统当前的状态,也依赖于系统过去某一时刻或若干时刻的状态,我们将这类动力系统称为时滞动力系统。近年来,时滞动力系统已成为许多领域的重要研究对象。在电路、光学、神经网络、生物环境与医学、建筑结构、机械等领域,人们对时滞动力系统作了大量的研究,取得了许多重要成果,…

    2022年10月1日
    4
  • Petshop4 的研究分析「建议收藏」

    Petshop4 的研究分析「建议收藏」 1.项目概述与架构分析微软刚推出了基于ASP.NET2.0下的PetShop4,该版本有了一个全新的用户界面。是研究ASP.NET2.0的好范例啊,大家都知道,一直以来,在.NET和Java之间争论不休,到底使用哪个平台开发的企业级应用性能最好、结构最优、生产力最高。为了用事实说话,通过对项目各方面的性能评估进而在比较.NET和Java的高下。用户做比较的这个项目就是Petshop

    2022年10月16日
    5
  • 安卓模拟器打开开发者模式(USB调试)的方法

    安卓模拟器打开开发者模式(USB调试)的方法第一步:进入设置第二步:找到“关于电脑”(或者是“关于手机”)第三步:连续点击版本号字样,会有提示‘继续点击xx秒即可进入开发者模式’第四步:重新进入设置,会看到‘开发者选项’第五步:进入开发者选项,打开“USB调试”…

    2025年9月6日
    7
  • MAC 安装 wrk

    MAC 安装 wrk用 Homebrew 安装失败了 developebrew gt Downloadingh homebrew bintray com bottles wrk 4 1 0 mojave bottle 2 t curl 22 Therequested 4

    2026年3月18日
    2
  • pymssql for linux[通俗易懂]

    pymssql for linux[通俗易懂]linux连接SQLServer,pymssql安装包下载,链接:https://pan.baidu.com/s/1zXyhvatpoaFRpcptmv0reA密码:y3w1安装如下:yuminstallpython-devel-ytarzxfpytz-2018.4.tar.gzcdpytz-2018.4pythonsetup.pyinstallcdta…

    2022年6月19日
    30
  • 发卡网源码附企业发卡网源码搭建安装教程[通俗易懂]

    发卡网源码附企业发卡网源码搭建安装教程[通俗易懂]  发卡网源码类似于线下无人售货机的内核,一套高效运行的企业发卡网源码可以为平台上的不同商户提供稳定的发卡服务,一方面顾客可以24小时无忧的选择自己所需的商品,另一方面为商家节省大量的营销成本。平台所需要的做的事情只是处理好客户的纠纷问题,从中赚取一定的管理服务费,可谓是一种三方共赢的商业模式。  发卡网源码:fakaysw.top    选择一套好的企业多商户发卡网源码有一些最基本的要素是考虑的,下面本文来一一分析:    1、源码是否有后门,很多朋友往往为了贪图便宜,找一些免费的或者便

    2022年7月14日
    27

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号