华为面试题——约瑟夫问题的C++简单实现(循环链表)
时间:2022-04-25
本文章向大家介绍华为面试题——约瑟夫问题的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;
}
}
- Mysql备份系列(3)--innobackupex备份mysql大数据(全量+增量)操作记录
- 微信小程序开发:设置消息推送
- Mysql备份系列(1)--备份方案总结性梳理
- ASP.NET中常用的优化性能的方法(转贴,Icyer收集整理)
- 顶象全场景IoT安全方案解决物联网两大难题
- 诡异的【session丢失】和【<img src="">标签】
- TensorFlow核心使用要点
- “搜一搜”直达生活服务 微信连接移动消费新场景
- Linux服务器安全登录设置记录
- Linux系统下的ssh使用(依据个人经验总结)
- 从MapX到MapXtreme2004[4]-标注AutoLabel
- Linux下锁定账号,禁止登录系统的设置总结
- 深度解析 TypeConverter & TypeConverterAttribute (一)
- 从MapX到MapXtreme2004[7]-对Table、Feature等的理解
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- centos8 安装 nginx的详细教程(图文)
- Ubuntu系统日志配置 /var/log/messages的方法
- 在Ubuntu 14 上安装 Nginx-RTMP 流媒体服务器的教程
- centos8自定义目录安装nginx(教程详解)
- VMware下Centos7桥接方式网络配置步骤详解
- Linux CentOS 6.5 卸载、tar安装MySQL的教程
- Linux CentOS 6.5 ifconfig查询不到ip的解决方法
- 打卡群2刷题总结1009——二叉树的中序遍历
- 解决Ubuntu 18.04安装VMwareTools错误问题
- 对linux下syslogd以及syslog.conf文件的解读说明
- Linux下安装tomcat并部署网站(推荐)
- 解决Linux中ifconfig和addr查看不到ip问题
- 【软件测试】面试中问到Linux命令,你都答上来了吗?【送书】
- Linux用户自定义at、cron计划任务执行的方法
- Linux下Oracle设置定时任务备份数据库的教程