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

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

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

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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java反编译工具Java Decompiler

    java反编译工具Java Decompiler我想看一下jsp编译后生成的java文件,用记事本这些看的话要不就乱码,要不就看起来很乱,可读性很低百度了一下java反编译工具JavaDecompiler:这个工具不仅能反编译.class文件,将.class文件转换为可读的.java文件,而且还可以对整个jar包进行反编译。该工具不仅有自己的图形化界面工具JD-GUI,而且还有eclipse和IntelliJIDEA的…

    2022年7月8日
    24
  • python求逆矩阵的方法,Python 如何求矩阵的逆「建议收藏」

    python求逆矩阵的方法,Python 如何求矩阵的逆「建议收藏」我就废话不多说了,大家还是直接看代码吧~importnumpyasnpkernel=np.array([1,1,1,2]).reshape((2,2))print(kernel)print(np.linalg.inv(kernel))注意,Singularmatrix奇异矩阵不可求逆补充:python+numpy中矩阵的逆和伪逆的区别定义:对于矩阵A,如果存在一个矩阵B,使得A…

    2022年8月21日
    6
  • Apache MINA框架「建议收藏」

    ApacheMINA(MultipurposeInfrastructureforNetworkApplications)是Apache组织一个较新的项目,它为开发高性能和高可用性的网络应用程序提供了非常便利的框架。当前发行的MINA版本支持基于JavaNIO技术的TCP/UDP应用程序开发、串口通讯程序(只在最新的预览版中提供),MINA所支持的功能也在进一步的扩展

    2022年4月10日
    131
  • 211逆袭浙大-计算机及相关衍生专业保研之路纪实(深度长文,收藏了)

    211逆袭浙大-计算机及相关衍生专业保研之路纪实(深度长文,收藏了)面试过N个院校,最后上岸浙江大学软件学院

    2022年7月25日
    26
  • Android TextView两端对齐、文本两端对齐

    Android TextView两端对齐、文本两端对齐如题 在开发中 经常会用到比如说类似于表格的排版 效果图 这样的效果 谷歌也没给出这样效果的方法 网上查也没找到实现方法 然后想 中间用空格填充呢 试试 然后写了几个 TextView 对比一下 如下 放大效果 可以看出 不能完美对齐 这肯定不是想要的效果 然后就发现了两个占字符来实现 nbsp 他们与汉字换算关系就是 1 个汉字 4 个

    2025年11月5日
    3
  • J2EE是什么意思_main()函数是java程序的执行入口

    J2EE是什么意思_main()函数是java程序的执行入口j2ee   J2EE简介  J2EEJava2平台企业版(Java2Platform,EnterpriseEdition)   J2EE是一套全然不同于传统应用开发的技术架构,包含许多组件,主要可简化且规范应用系统的开发与部署,进而提高可移植性、安全与再用价值。   J2EE核心是一组技术规范与指南,其中所包含的各类组件、服务架构及技术层次,均有共通的标准及规格,让各种依

    2022年10月11日
    3

发表回复

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

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