C++ 字符串编程训练2
今天讲的一道习题是很经典的约瑟夫环问题,其实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相关推荐
- C++ 字符串编程训练1
最近又到了找工作的时间,所以想每天抽点时间出来对编程进行相关训练.C++字符串是一个很重要的知识点,采用STL.算法等C++优于C的方面,能够使问题解决起来更加轻松.以下程序都是自己写的,可能有些地方 ...
- c语言测试程序题有难度的,C语言编程训练、测试题库.doc
您所在位置:网站首页 > 海量文档  > 计算机 > C/C++资料 C语言编程训练.测试题库.doc162页 本文档 ...
- 实验七 字符串 编程题 1. 飞来飞去
实验七 字符串 编程题 1. 飞来飞去 [问题描述] 松雅作为一位商业人士,经常需要在天津和深圳之间飞来飞去,因为在这两个城市,她有多间旅馆.当然在冬天她更愿意从天津飞到深圳,因为深圳更暖和.她实在是 ...
- 类的构造方法编程训练2—设置信用卡密码
编程训练4 [训练4]设置信用卡密码,创建信用卡类,有两个成员变量,分别是卡号和密码,如果用户开户时没有设置初始密码,则使用 123456作为初始密码.设计两种不同的方法,分别用于设置密码和用户未设置 ...
- c语言课本第八章答案,c语言第八章字符串编程答案
中国石油大学c语言编程个人答案,包括:字符转换,合并字符串,删除重复字符,删除指定字符,[设计型]8.5 单词有多少,8.6 在指定位置插入字符串,[探索性]8.8 大数相加,[研究创新性]8.7 Y ...
- java 字符串编程题_Java编程题——在一个字符串中查找第一个非重复的字符
编写一个Java程序来查找一个字符串中第一个非重复的字符,这是在编程测试中很常见的一个问题,因为字符串处理在程序员面试中是一个普遍的话题.面试前最好是准备好一些熟知的编程问题,例如使用递归反转字符串, ...
- Python 编程训练2:二维向量
目标 定义一个 Python 类名为 V2,用于表示二维向量,支持下列向量运算: 由两个实数创建一个二维向量:如:v = V2(1.1, 2.2) 将一个向量转换为字符串形式(使用__str__方法) ...
- EduCoder-Web程序设计基础-web编程训练-html5-图像的运用-第2关:带插图的新媒体新闻网页的设计
目录 任务描述 相关知识 测试说明 代码示例 任务描述 本关任务:编写一个带有插图的新闻网页. 相关知识 为了完成本关任务,你需要掌握:img标签及其属性. 图像标签的常用属性 img标签是单表签,行 ...
- shell 字符串编程--Bash测试和比较函数
原文地址:http://hi.baidu.com/olii/blog/item/d844b0cb72fe0919bf09e62a.html 最近在学习bash,保存备用. Linux技巧:Bash测试 ...
最新文章
- Linux下Dialog+Shell三层目录专业规范跳板机脚本
- JavaScriptjQuery.document对象属性和方法
- python读取nc文件并转换成csv_如何使用Python读取NetCDF文件并写入CSV
- [收藏]DIV中控制超级链接的方法
- 软件程序设计中的N-S图、PAD图、程序流程图、E-R图
- Scratch Games Scratch游戏
- java textfield 右对齐_TextField右对齐问题javafx
- 19. 正则表达式(二)
- maya表情blendshape_【UE4】人物角色MorphTarget(Blendshape) 面部表情制作方案
- stm32串口通信实验
- html5竞赛试题,全国大学生英语竞赛试题
- C 标准库 limits
- 计算机语言属于人类意识的客观内容,《2008年考研政治800题精解》世界的物质性和人的实践活动(5)...
- FPGA学习笔记(八)同步/异步信号的打拍分析处理及亚稳态分析
- Java处理MP3资料
- php理论掌握太少,科学网—我为什么反对让学生过早地选课和选考 - 冯大诚的博文...
- python 类属性函数,python_30期【类包含属性和函数】
- Python - yamail - 进阶之路 - Day08
- 超级简单五子棋小游戏(含代码)
- 【谷歌地图--MapsSDK集成】
热门文章
- 《Spring3.0就这么简单》
- [转载]jquery cookie的用法
- Servlet - cookie、session、servletContext概述
- vue删除数组中的一条数据_删除排序数组中的重复项 II
- 服务器设备性能说明,OMC服务器硬件性能和配置说明.doc
- 计算机社团竞选优势6,社团社长竞选稿六篇
- centos7建站php_centos7搭建php服务器
- 汽车电子专业知识篇(六十三)-继电器的结构、工作原理、检测方法
- mysql排序两位数_MySQL_Mysql row number()排序函数的用法和注意,虽然使用不多,但是也有情况 - phpStudy...
- workbook加载文件路径_通过Workbook.XML 修复Excel自定义名称