C++循环链表实现约瑟夫退圈(类封装)
node.h
- #pragma once
- #include <iostream>
- #include <iomanip>
- using namespace std;
- struct number
- {
- int n;
- number *_next;
- };//结构体定义
- class node
- {
- int m,k;//m报数上限 k人数
- number *s;
- public://成员函数
- node(void);
- ~node(void);
- void Joseph();
- void set(int x);
- void Delete(int x);
- };
node.cpp
- #include "node.h"
- node::node(void)
- {
- s=NULL;//构造函数 令指针s指向空
- }
- node::~node(void)
- {
- }
- void node::Joseph()
- {
- int i=,l=;
- cout<<"请输入总人数、报数上限:"<<endl;
- cin>>k>>m;
- cout<<"依次退圈的人:"<<endl;
- set(k);
- number *p=s,*q;
- while(l<k-)
- {
- q=p;
- p=p->_next;
- i++;
- if(i==m)
- {
- l++;
- cout<<q->n<<"号"<<endl;//报数报到上限 记录退出成员号码
- Delete(q->n);//该成员退圈 及删除该节点
- i=;
- }
- }
- cout<<"最后剩下的人: "<<s->n<<"号"<<endl;//最后链表中剩下的最后一个节点
- }
- void node::set(int x)//建立循环链表
- {
- int i;
- s=new number;
- s->n=; s->_next=NULL;//没有设头结点
- number *p=s,*q=NULL;
- for(i=;i<=x;i++)
- {
- q=new number;
- q->n=i;
- q->_next=NULL;
- p->_next=q;
- p=q;
- }
- p->_next=s;//最后一个节点指针指向第一个节点实现循环
- }
- void node::Delete(int x)//删除链表中数据为x的节点
- {
- number *p=s,*q=NULL;
- if(s->n==x)
- {
- while(p->_next!=s)
- {
- q=p;
- p=p->_next;
- }
- s=s->_next;
- p->_next=s;
- }
- else
- {
- while(p->n!=x)
- {
- q=p;
- p=p->_next;
- }
- q->_next=p->_next;
- }
- }
main.cpp
- #include "node.h"
- void main()
- {
- node a;
- a.Joseph();
- }
结果截图:
C++循环链表实现约瑟夫退圈(类封装)的更多相关文章
- 关于单向循环链表的约瑟夫问题(Java实现)
关于单向循环链表的约瑟夫问题(Java实现) 最近在学习链表时,遇到单向循环链表中的约瑟夫问题.在构建循环链表的代码上,我有一点很不理解,遂记录下来. Josephu问题为: 设编号为1, 2,.. ...
- salesforce 零基础学习(四十八)自定义列表分页之Pagination基类封装 ※※※
我们知道,salesforce中系统标准列表页面提供了相应的分页功能,如果要使用其分页功能,可以访问http://www.cnblogs.com/zero-zyq/p/5343287.html查看相关 ...
- Have Fun with Numbers及循环链表(约瑟夫问题)
1. 循环链表(约瑟夫问题) https://github.com/BodhiXing/Data_Structure 2. Have Fun with Numbers https://pta.pate ...
- Redis操作Set工具类封装,Java Redis Set命令封装
Redis操作Set工具类封装,Java Redis Set命令封装 >>>>>>>>>>>>>>>>& ...
- Redis操作List工具类封装,Java Redis List命令封装
Redis操作List工具类封装,Java Redis List命令封装 >>>>>>>>>>>>>>>> ...
- Redis操作Hash工具类封装,Redis工具类封装
Redis操作Hash工具类封装,Redis工具类封装 >>>>>>>>>>>>>>>>>> ...
- Redis操作字符串工具类封装,Redis工具类封装
Redis操作字符串工具类封装,Redis工具类封装 >>>>>>>>>>>>>>>>>>& ...
- java中基于TaskEngine类封装实现定时任务
主要包括如下几个类: 文章标题:java中基于TaskEngine类封装实现定时任务 文章地址: http://blog.csdn.net/5iasp/article/details/10950529 ...
- CColor类封装
CColor类封装 Color.h #pragma once #include <sstream> #include <string> using namespace std; ...
随机推荐
- (4.13)SQL Server profile使用、数据库优化引擎顾问使用
SQL Server profile使用技巧 介绍 经常会有人问profile工具该怎么使用?有没有方法获取性能差的sql的问题.自从转mysql我自己也差不多2年没有使用profile,忽然prof ...
- [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 ...
- corethink功能模块探索开发(六)让这个模块在前台显示
效果图:(注意右上角) 实现模块的前台显示只需要在模块目录中的Controller目录建立IndexController.class.php,实现index方法.继承HomeController.就能 ...
- substring splice
返回start到end之前 不包括end stringObject.substring(start,end) (不接受负数) stringObject.slice(start,end) start起始 ...
- 【HackerRank】 Chocolate Feast
Little Bob loves chocolates, and goes to the store with $N money in his pocket. The price of each ch ...
- Nginx 常见报错
Nginx 常见报错 启动报错:[emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use) 原因:这个是nginx重启时经常遇到 ...
- gem Errno::ECONNRESET: Connection reset by peer - SSL_connect
问题描述 在使用gem安装软件包时,会时常遇到下面的问题: ERROR: While executing gem ... (Gem::RemoteFetcher::FetchError) Errno: ...
- codeforces上某题
一道codeforces上的题目. 题目大意: 定义有k个不同的字符的字符串为好字符串.现在给出一个字符串,求解对该字符串的每个前缀Si至少是多少个好字符串的连接,若不能由好字符串连接而成则输出-1. ...
- etcd 安装部署
etcd 是coreos团队开发的分布式服务发现键值存储仓库. github地址: https://github.com/coreos/etcd 安装: 1.下载etcd最新版本 https://gi ...
- Entity Framework 7 动态 DbContext 模型缓存 ModelCaching
EF7里实例化DbContext变的有点麻烦了, 下面这个基类会有所帮助: public abstract class BaseDbContext : DbContext { private stri ...