早教吧作业答案频道 -->其他-->
跪求!C++!利用循环链表实现约瑟夫问题的求解约瑟夫问题如下:已知n个人(n>=1)围坐一圆桌周围,从1开始顺序编号。从序号为1的人开始报数,顺时针数到m的那个人出列;他的下一
题目详情
跪求! C++ ! 利用 循环链 表实现 约瑟夫 问题的求解
约瑟夫问题如下: 已知n个人(n>=1)围坐一圆桌周围,从1开始顺序编号。从序号为1的人开始报数,顺时针数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规则重复下去,直到所有人全部出列。请问最后一个出列的人的编号。 ( 最好能帮我把关键算法注释一下)
约瑟夫问题如下: 已知n个人(n>=1)围坐一圆桌周围,从1开始顺序编号。从序号为1的人开始报数,顺时针数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规则重复下去,直到所有人全部出列。请问最后一个出列的人的编号。 ( 最好能帮我把关键算法注释一下)
▼优质解答
答案和解析
#include
struct Node
{
int data;
Node *next;
};
void main()
{
int n,k,m,i,s;
Node *p,*q,*head;
cout< cin>>n;
cout< cin>>k;
cout< cin>>m;
head=new Node; //确定头结点
p=head;
for(i=1;i<=n-1;i++) //赋初值
{
p->data=i;
p->next=new Node; //为下一个新建内存
p=p->next;
}
p->data=n; //最后一个单独处理
p->next=head; //指向头,形成循环链表
p=head;
while(p->data!=(p->next)->data) //p->data==(p->pNext)->data表示只剩下一个结点的
{
while(p->data !=k) //寻找编号为k的结点
p=p->next;
s=1;
if(m==1)
{
for(i=1;i {
cout<data< p=p->next ;
}
cout<data< break;
}
else
{
while(p!=p->next)
{
for(i=1;i p=p->next;
q=p->next;
cout<data< p->next=q->next;
p=p->next;
delete q;
s++;
}
cout<data< delete p;
}
}}
/*这是今天刚做的,你看看应该可以吧,是C++的*/
struct Node
{
int data;
Node *next;
};
void main()
{
int n,k,m,i,s;
Node *p,*q,*head;
cout< cin>>n;
cout< cin>>k;
cout< cin>>m;
head=new Node; //确定头结点
p=head;
for(i=1;i<=n-1;i++) //赋初值
{
p->data=i;
p->next=new Node; //为下一个新建内存
p=p->next;
}
p->data=n; //最后一个单独处理
p->next=head; //指向头,形成循环链表
p=head;
while(p->data!=(p->next)->data) //p->data==(p->pNext)->data表示只剩下一个结点的
{
while(p->data !=k) //寻找编号为k的结点
p=p->next;
s=1;
if(m==1)
{
for(i=1;i
cout<data<
}
cout<data<
}
else
{
while(p!=p->next)
{
for(i=1;i
q=p->next;
cout<data<
p=p->next;
delete q;
s++;
}
cout<data<
}
}}
/*这是今天刚做的,你看看应该可以吧,是C++的*/
看了 跪求!C++!利用循环链表实...的网友还看了以下:
下列加点字的注音和字形全都正确的一项是()A.确凿(záo)酝酿(liánɡ)愧作(zuò)即物起 2020-05-14 …
求证:(1)A(n+1,n+1)-A(n,n)=n^2A(n-1,n-1);(2)C(m,n+1) 2020-06-03 …
帮忙求下下面三个极限:lim(n→∞)∑(n+i)½/(n³)½,下部为i=1,上部为n第二个li 2020-06-12 …
《河中石兽》纪昀沧州南,一寺临河干(gān),山门圮(pǐ)于河,二石兽并沉焉。阅十余岁,僧募金重 2020-06-13 …
下列加点字的注音完全正确的一项是()A.虔•诚(qián)瑟•缩(shè)笑容可掬•(jū)B.孤 2020-06-28 …
下列词语中划线字的读音完全正确的一组是[]A.朦胧(móng)冗长(ráng)乐以教和(hé)B. 2020-07-02 …
下列词语中加粗字的读下列词语中加粗字的读音全都正确的一项是[]A.粗犷(kuàng)恪守(kè)询 2020-07-06 …
下列字形和加点字注音全部正确的一项是()A.勾当(ɡòu)恻隐忍俊不禁(jīn)妇儒皆知B.归省( 2020-07-16 …
(2v口2•烟台一模)某实验七组利用如下仪器组装一套制备氮化硼晶体的装置.反应原理是下2Ou+2N 2020-07-29 …
阅读短文,回答下面问题。沧州南,一寺临河干(gān),山门圮(pǐ)于河,二石兽并沉焉。阅十余岁,僧 2020-12-23 …