node.h

  1. #pragma once
  2. #include <iostream>
  3. #include <iomanip>
  4. using namespace std;
  5.  
  6. struct number
  7. {
  8. int n;
  9. number *_next;
  10. };//结构体定义
  11. class node
  12. {
  13. int m,k;//m报数上限 k人数
  14. number *s;
  15. public://成员函数
  16. node(void);
  17. ~node(void);
  18. void Joseph();
  19. void set(int x);
  20. void Delete(int x);
  21. };

node.cpp

  1. #include "node.h"
  2. node::node(void)
  3. {
  4. s=NULL;//构造函数 令指针s指向空
  5. }
  6. node::~node(void)
  7. {
  8. }
  9. void node::Joseph()
  10. {
  11. int i=,l=;
  12. cout<<"请输入总人数、报数上限:"<<endl;
  13. cin>>k>>m;
  14. cout<<"依次退圈的人:"<<endl;
  15. set(k);
  16. number *p=s,*q;
  17. while(l<k-)
  18. {
  19. q=p;
  20. p=p->_next;
  21. i++;
  22. if(i==m)
  23. {
  24. l++;
  25. cout<<q->n<<"号"<<endl;//报数报到上限 记录退出成员号码
  26. Delete(q->n);//该成员退圈 及删除该节点
  27. i=;
  28. }
  29. }
  30. cout<<"最后剩下的人: "<<s->n<<"号"<<endl;//最后链表中剩下的最后一个节点
  31. }
  32. void node::set(int x)//建立循环链表
  33. {
  34. int i;
  35. s=new number;
  36. s->n=; s->_next=NULL;//没有设头结点
  37. number *p=s,*q=NULL;
  38. for(i=;i<=x;i++)
  39. {
  40. q=new number;
  41. q->n=i;
  42. q->_next=NULL;
  43. p->_next=q;
  44. p=q;
  45. }
  46. p->_next=s;//最后一个节点指针指向第一个节点实现循环
  47. }
  48. void node::Delete(int x)//删除链表中数据为x的节点
  49. {
  50. number *p=s,*q=NULL;
  51. if(s->n==x)
  52. {
  53. while(p->_next!=s)
  54. {
  55. q=p;
  56. p=p->_next;
  57. }
  58. s=s->_next;
  59. p->_next=s;
  60. }
  61. else
  62. {
  63. while(p->n!=x)
  64. {
  65. q=p;
  66. p=p->_next;
  67. }
  68. q->_next=p->_next;
  69. }
  70. }

main.cpp

  1. #include "node.h"
  2. void main()
  3. {
  4. node a;
  5. a.Joseph();
  6. }

结果截图:

C++循环链表实现约瑟夫退圈(类封装)的更多相关文章

  1. 关于单向循环链表的约瑟夫问题(Java实现)

    关于单向循环链表的约瑟夫问题(Java实现) 最近在学习链表时,遇到单向循环链表中的约瑟夫问题.在构建循环链表的代码上,我有一点很不理解,遂记录下来. Josephu问题为: 设编号为1, 2,.. ...

  2. salesforce 零基础学习(四十八)自定义列表分页之Pagination基类封装 ※※※

    我们知道,salesforce中系统标准列表页面提供了相应的分页功能,如果要使用其分页功能,可以访问http://www.cnblogs.com/zero-zyq/p/5343287.html查看相关 ...

  3. Have Fun with Numbers及循环链表(约瑟夫问题)

    1. 循环链表(约瑟夫问题) https://github.com/BodhiXing/Data_Structure 2. Have Fun with Numbers https://pta.pate ...

  4. Redis操作Set工具类封装,Java Redis Set命令封装

    Redis操作Set工具类封装,Java Redis Set命令封装 >>>>>>>>>>>>>>>>& ...

  5. Redis操作List工具类封装,Java Redis List命令封装

    Redis操作List工具类封装,Java Redis List命令封装 >>>>>>>>>>>>>>>> ...

  6. Redis操作Hash工具类封装,Redis工具类封装

    Redis操作Hash工具类封装,Redis工具类封装 >>>>>>>>>>>>>>>>>> ...

  7. Redis操作字符串工具类封装,Redis工具类封装

    Redis操作字符串工具类封装,Redis工具类封装 >>>>>>>>>>>>>>>>>>& ...

  8. java中基于TaskEngine类封装实现定时任务

    主要包括如下几个类: 文章标题:java中基于TaskEngine类封装实现定时任务 文章地址: http://blog.csdn.net/5iasp/article/details/10950529 ...

  9. CColor类封装

    CColor类封装 Color.h #pragma once #include <sstream> #include <string> using namespace std; ...

随机推荐

  1. (4.13)SQL Server profile使用、数据库优化引擎顾问使用

    SQL Server profile使用技巧 介绍 经常会有人问profile工具该怎么使用?有没有方法获取性能差的sql的问题.自从转mysql我自己也差不多2年没有使用profile,忽然prof ...

  2. [LeetCode-21]Construct Binary Tree from Preorder and Inorder Traversal

    Given preorder and inorder traversal of a tree, construct the binary tree. Note: You may assume that ...

  3. corethink功能模块探索开发(六)让这个模块在前台显示

    效果图:(注意右上角) 实现模块的前台显示只需要在模块目录中的Controller目录建立IndexController.class.php,实现index方法.继承HomeController.就能 ...

  4. substring splice

    返回start到end之前 不包括end stringObject.substring(start,end) (不接受负数) stringObject.slice(start,end) start起始 ...

  5. 【HackerRank】 Chocolate Feast

    Little Bob loves chocolates, and goes to the store with $N money in his pocket. The price of each ch ...

  6. Nginx 常见报错

    Nginx 常见报错 启动报错:[emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use) 原因:这个是nginx重启时经常遇到 ...

  7. gem Errno::ECONNRESET: Connection reset by peer - SSL_connect

    问题描述 在使用gem安装软件包时,会时常遇到下面的问题: ERROR: While executing gem ... (Gem::RemoteFetcher::FetchError) Errno: ...

  8. codeforces上某题

    一道codeforces上的题目. 题目大意: 定义有k个不同的字符的字符串为好字符串.现在给出一个字符串,求解对该字符串的每个前缀Si至少是多少个好字符串的连接,若不能由好字符串连接而成则输出-1. ...

  9. etcd 安装部署

    etcd 是coreos团队开发的分布式服务发现键值存储仓库. github地址: https://github.com/coreos/etcd 安装: 1.下载etcd最新版本 https://gi ...

  10. Entity Framework 7 动态 DbContext 模型缓存 ModelCaching

    EF7里实例化DbContext变的有点麻烦了, 下面这个基类会有所帮助: public abstract class BaseDbContext : DbContext { private stri ...