早教吧作业答案频道 -->其他-->
跪求!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++!利用循环链表实...的网友还看了以下:
用同样大小的正方形拼长方形,图形序号1,正方形个数2序号2个数6序号3个数12序号4个数20序号n 2020-06-04 …
将下列函数,按它们在n→∝时的无穷大阶数,从小到大排序。n,n-n3+7n5,nlogn,2n/2 2020-07-15 …
关于冒泡排序与快速排序.对于长度为N的线性表,在最坏的情况下,下列各排序法所对应的比较次数中正确的 2020-07-23 …
算法复杂度怎么计算的?此算法的算法复杂度是?for循环2的N次方for循环N的平方endfor循环 2020-07-23 …
(2012•武昌区模拟)为美化环境,某地决定在一个大型广场建一个同心圆形花坛,花坛分为两部分,中间小 2020-11-04 …
每排的座位数AN与排的序数N的关系.体育馆的每个区,每排的座位数AN与排的序数N的关系,写出用N表示 2020-11-18 …
某工程由下列工序组成,则工程总时数最少为()天.(注:m的紧前工序为n,意思是当工序n完成时工序m才 2020-12-01 …
某工程由下列工序组成,则工程总时数最少为()天.(注:m的紧前工序为n,意思是当工序n完成时工序m才 2020-12-05 …
程序设计C排序查找Description用选择法对N个学生的成绩按从大到小的顺序排序,N个学生的成绩 2020-12-05 …
飞镖是一种喜闻乐见的体育活动.飞镖靶上共标有10环,其中第10环的半径为1cm,第9环的半径为2cm 2020-12-23 …