今天讲的一道习题是很经典的约瑟夫环问题,其实lz对于链表的某些操作还不是太懂,所以在程序中有些地方还不太看得懂,这里借鉴的网上的做法,还请大牛能够解答我的疑惑,谢谢!

标题:约瑟夫环

说明:约瑟夫环是这么一个问题:已知n个人(编号1,2,。。。n)围坐在圆桌周围。从编号为k的人开始报数,数到m的人出列,他的下一个人又从1开始报数,数到m的人出列,直到所有人都出列。

struct node{

int num;

node *next;

};

node *creat(int n)//构建一个链表,即head-》1-》2-》。。。-》n,最后n又回到head
{
    node *p,*q,*head=NULL;
    for(int i=0;i<=n;i++)
    {
     p=new node;
     p->num=i;
     if(head==NULL)
      {
        head=p; //head用0来表示
      }
     else
     {
        q->next=p;
     }
     q=p;
    }
    p->next=head;  //p变为最后一个节点
    return p;
}

int main()

{

int n,k,m;//n为总人数,k为开始报数的人的序号,m为报到的需要出列的数

cin>>n>>k>>m;

node *l,*q;

l=creat(n);//l即为生成的链表

q=l;l=l->next;

for(int i=1;i<k;i++)//这步其实不太理解是什么意思

{

q=l;

l=l->next;

}

while(l->next!=l)//l->next==l表示只剩下最后一个人了

{

for(int i=1;i<m;i++)//如果还没有报到则依次遍历

{

q=l;

l=l->next;

}

cout<<l->num<<"->";//输出出列的人的序号

q->next=l->next;//将这个人的位置删去

delete l;

l=q->next;//用出列的下一个人来代替出列的人

}

cout<<l->num;

delete l;

}

转载于:https://www.cnblogs.com/elninohjh/p/4642292.html

C++ 字符串编程训练2相关推荐

  1. C++ 字符串编程训练1

    最近又到了找工作的时间,所以想每天抽点时间出来对编程进行相关训练.C++字符串是一个很重要的知识点,采用STL.算法等C++优于C的方面,能够使问题解决起来更加轻松.以下程序都是自己写的,可能有些地方 ...

  2. c语言测试程序题有难度的,C语言编程训练、测试题库.doc

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspC/C++资料 C语言编程训练.测试题库.doc162页 本文档 ...

  3. 实验七 字符串 编程题 1. 飞来飞去

    实验七 字符串 编程题 1. 飞来飞去 [问题描述] 松雅作为一位商业人士,经常需要在天津和深圳之间飞来飞去,因为在这两个城市,她有多间旅馆.当然在冬天她更愿意从天津飞到深圳,因为深圳更暖和.她实在是 ...

  4. 类的构造方法编程训练2—设置信用卡密码

    编程训练4 [训练4]设置信用卡密码,创建信用卡类,有两个成员变量,分别是卡号和密码,如果用户开户时没有设置初始密码,则使用 123456作为初始密码.设计两种不同的方法,分别用于设置密码和用户未设置 ...

  5. c语言课本第八章答案,c语言第八章字符串编程答案

    中国石油大学c语言编程个人答案,包括:字符转换,合并字符串,删除重复字符,删除指定字符,[设计型]8.5 单词有多少,8.6 在指定位置插入字符串,[探索性]8.8 大数相加,[研究创新性]8.7 Y ...

  6. java 字符串编程题_Java编程题——在一个字符串中查找第一个非重复的字符

    编写一个Java程序来查找一个字符串中第一个非重复的字符,这是在编程测试中很常见的一个问题,因为字符串处理在程序员面试中是一个普遍的话题.面试前最好是准备好一些熟知的编程问题,例如使用递归反转字符串, ...

  7. Python 编程训练2:二维向量

    目标 定义一个 Python 类名为 V2,用于表示二维向量,支持下列向量运算: 由两个实数创建一个二维向量:如:v = V2(1.1, 2.2) 将一个向量转换为字符串形式(使用__str__方法) ...

  8. EduCoder-Web程序设计基础-web编程训练-html5-图像的运用-第2关:带插图的新媒体新闻网页的设计

    目录 任务描述 相关知识 测试说明 代码示例 任务描述 本关任务:编写一个带有插图的新闻网页. 相关知识 为了完成本关任务,你需要掌握:img标签及其属性. 图像标签的常用属性 img标签是单表签,行 ...

  9. shell 字符串编程--Bash测试和比较函数

    原文地址:http://hi.baidu.com/olii/blog/item/d844b0cb72fe0919bf09e62a.html 最近在学习bash,保存备用. Linux技巧:Bash测试 ...

最新文章

  1. Linux下Dialog+Shell三层目录专业规范跳板机脚本
  2. JavaScriptjQuery.document对象属性和方法
  3. python读取nc文件并转换成csv_如何使用Python读取NetCDF文件并写入CSV
  4. [收藏]DIV中控制超级链接的方法
  5. 软件程序设计中的N-S图、PAD图、程序流程图、E-R图
  6. Scratch Games Scratch游戏
  7. java textfield 右对齐_TextField右对齐问题javafx
  8. 19. 正则表达式(二)
  9. maya表情blendshape_【UE4】人物角色MorphTarget(Blendshape) 面部表情制作方案
  10. stm32串口通信实验
  11. html5竞赛试题,全国大学生英语竞赛试题
  12. C 标准库 limits
  13. 计算机语言属于人类意识的客观内容,《2008年考研政治800题精解》世界的物质性和人的实践活动(5)...
  14. FPGA学习笔记(八)同步/异步信号的打拍分析处理及亚稳态分析
  15. Java处理MP3资料
  16. php理论掌握太少,科学网—我为什么反对让学生过早地选课和选考 - 冯大诚的博文...
  17. python 类属性函数,python_30期【类包含属性和函数】
  18. Python - yamail - 进阶之路 - Day08
  19. 超级简单五子棋小游戏(含代码)
  20. 【谷歌地图--MapsSDK集成】

热门文章

  1. 《Spring3.0就这么简单》
  2. [转载]jquery cookie的用法
  3. Servlet - cookie、session、servletContext概述
  4. vue删除数组中的一条数据_删除排序数组中的重复项 II
  5. 服务器设备性能说明,OMC服务器硬件性能和配置说明.doc
  6. 计算机社团竞选优势6,社团社长竞选稿六篇
  7. centos7建站php_centos7搭建php服务器
  8. 汽车电子专业知识篇(六十三)-继电器的结构、工作原理、检测方法
  9. mysql排序两位数_MySQL_Mysql row number()排序函数的用法和注意,虽然使用不多,但是也有情况 - phpStudy...
  10. workbook加载文件路径_通过Workbook.XML 修复Excel自定义名称