华为面试题——约瑟夫问题的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;
     }
 }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据结构与算法

11:大整数减法

11:大整数减法 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB描述 求两个大的正整数相减的差。 输入共2行,第1行是被减...

28810
来自专栏应兆康的专栏

100个Numpy练习【3】

Numpy是Python做数据分析必须掌握的基础库之一,非常适合刚学习完Numpy基础的同学,完成以下习题可以帮助你更好的掌握这个基础库。

4979
来自专栏zhisheng

#每日一题#4

4、已知广义表LS=((a,b,c),(d,e,f)),运用head和tail函数取出LS中原子e的运算是() A、head(tail(LS)) B、tail(...

3456
来自专栏极客猴

Django 学习笔记之模型高级用法(下)

除了抽象模型,在模型中定义的字段都会成为表中的列。如果我们需要给模型指定其他一些信息,例如排序方式、数据库表名等,就需要用到 Meta。Meta 是一个可选的类...

922
来自专栏mathor

枚举+优化(8)——前缀和2

2505
来自专栏落影的专栏

Metal入门教程总结

本文介绍Metal和Metal Shader Language,以及Metal和OpenGL ES的差异性,也是实现入门教程的心得总结。

9596
来自专栏PPV课数据科学社区

Pandas速查卡-Python数据科学

Josh Devlin 2017年2月21日 Pandas可以说是数据科学最重要的Python包。 它不仅提供了很多方法和函数,使得处理数据更容易;而且它已经...

3907
来自专栏听雨堂

从MapX到MapXtreme2004[6]-标点心得

在Web上标点,首先要将图层所在文件夹的写权限放开。如果是普通的标点,可以这样:    MapInfo.Data.Table tb=MapInfo.Engine...

2138
来自专栏Python绿色通道

数据分析 | Numpy进阶

切片索引Numpy中选取数据子集或者单个元素的方式有很多,一维数组和Pyhon列表的功能差不多,看下图:

1151
来自专栏蜉蝣禅修之道

Max-Min Fairness带宽分配算法

2086

扫码关注云+社区

领取腾讯云代金券