链队列约瑟夫环c++代码_约瑟夫环代码C++版

实习报告

题目:约瑟夫环

班级:

031014

姓名:刘嵩

学号:

03101409

完成日期:

2011.11.16

一、需求分析

1.

本演示程序中,要求用户输入人数

n

和初始报数上限的值

m

。并依次输入

n

个人

的密码(

password

)

。程序输出

n

个人的出列顺序。

2.

演示程序以用户和计算机的对话方式执行,

即在计算机终端上显示

“提示信息”

后,

由用户在键盘上输入演示程序中规定的运算命令;

相应的输入数据和越算结

果显示在其后。

3.

程序执行的命令包括

1

)构造链表

2

)依照题意对链表进行操作,每次删除一个链表的节点并将删

除节点的编号输出

3

)结束

4.

测试数据

Sample input

7

20

3 1 7 2 4 8 4

Sample output

6 1 4 7 2 3 5

二、概要设计(算法描述)

为实现上述程序功能,

应以循环列表表示

n

个人围坐一圈。

循环列表每个节点所要包含

的信息包括:

1.

每个人的编号

2.

每个人的密码

3.

指向下一个节点的指针。建好链表后,

从链表的首个节点开始,顺着链表向后移

m

次,得到一个节点

Node

。输出

Node

的编号,

并将

Node

从链表中删除,然后讲

Node

的密码值作为新的

m

。重复以上步骤,直到所有节

点均被从链表中删除为止。算法复杂度为

O(m*n)

三、详细设计

代码如下

:

#include

using namespace std;

struct node

{

int id;

int password;

node* next;

};

int main()

{

i

nt m,n;

c

out<

c

in>>n;

c

out<

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值