华为面试题——约瑟夫问题的C++简单实现(循环链表)
/*
author:jiangxin
Blog:http://blog.csdn.net/jiangxinnju
Function:method of Josephus question
*/
#include <iostream>
using namespace std;
struct node
{
int seq;
node *next;
};
typedef struct node NODE;
void test_Josephus()
{
/*假设共有n人,从第s个人开始数数,每数到m该人出列,后面的人重新开始数,知道全部人出列*/
int n,s,m;
NODE *head,*last,*current,*prev;
cout << "Input the n,s,m(separate with space):";
cin >> n >> s >> m;
for(int i=1;i<=n;i++) //建立循环链表
{
current = new NODE;
current->seq = i;
current->next = head;
if(i == 1)
{
head = current;
last = current;
}
else
{
last->next = current;
last = last->next;
}
}
current = head; //遍历循环链表,输出序列
do
{
cout << current->seq << " ";
current = current->next;
}while(current!=head);
current = head; //将current置于第s个位置
for(int i=1;i<s;i++)
{
current = current->next;
}
cout << endl;
for(int i=1;i<=n;i++) //共循环n轮,得到一个整体的输出序列
{
for(int j=1;j<m;j++)
{
prev = current;
current = current->next;
}
cout << current->seq << " ";
prev->next = current->next;
delete current;
current = prev->next;
}
}
最新文章
- cocos2dx 入门
- h264
- <;string>;和<;string.h>;的区别
- ASP导出Word带页眉页脚,中文不乱码
- Java List 用法代码分析 非常详细
- 展讯CEO:低毛利生存 由中低端转向高端
- C#操作redis代码汇总
- spring xml 空模板-applicationContext.xml
- JQ无法修改input的type属性的替代解决方法
- SQL Server 创建作业系列问题
- “-Xmx1024m -Xms1024m -Xmn512m -Xss256k”——Java运行参数(转)
- PHP学习之旅——PHP环境搭建
- MS-DOS命令dir命令详细解析
- Odoo的模块和应用程序的区别和使用
- mongodb 遇到问题-查询单个需要包装id
- git 本地重命名文件夹大小写并提交到远程分支
- coursera吴恩达 机器学习编程作业原文件 及我的作业
- Codeforces Round #371 (Div. 2) B. Filya and Homework 水题
- iOS - OC - 字典快速遍历
- COCO 数据集使用说明书
热门文章
- 获取或者设置时,无后缀和A后缀和W后缀的区别
- HTML DOM简介
- 用于JDBC操作数据库的公共类
- (1)创建一个叫做机动车的类: 属性:车牌号(String),车速(int),载重量(double) 功能:加速(车速自增)、减速(车速自减)、修改车牌号,查询车的载重量。 编写两个构造方法:一个没有形参,在方法中将车牌号设置“XX1234”,速 度设置为100,载重量设置为100;另一个能为对象的所有属性赋值; (2)创建主类: 在主类中创建两个机动车对象。
- DbUtils使用时抛出Cannot get a connection
- Mysql错误问题记录
- Get_File_Name Usage in Oracle Forms 6i
- Mysql事件学习
- Vmware10.0 安装系统以及使用笔记
- java web开发必备知识