| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 888 人关注过本帖
标题:[求助]约瑟夫程序问题
只看楼主 加入收藏
kyq60802
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2007-5-20
收藏
 问题点数:0 回复次数:2 
[求助]约瑟夫程序问题

约瑟夫问题,总共n个人,从第一个开始数,数到第m个,第m个推出,接着继续数,一直到最后一个为止,程序如下,当n=8,m=4,结果正确,但n=8,m=1,或n=8,m=2时结果不对,请高手帮帮忙,是出什么问题。个人觉得算法没问题呀!
#include <iostream.h>
typedef struct Node
{
int data;
struct Node* next;
} *Pointer;
void Create(Pointer& head,int k)
{
Pointer p,q;
head=new Node;
p=head;
head->data=1;
for(int i=2;i<=k;i++)
{
q=new Node;
q->data=i;
p->next=q;
p=q;
}
p->next=head;
}
void Remove(Pointer t)
{
Pointer r;
r=t->next;
t->next=r->next;
cout<<r->data<<endl;
delete(r);
}
void main()
{
int m,n;
cout<<"请输入m,n"<<endl;
cin>>m>>n;
cout<<"编号为:";
for(int i=1;i<=n;i++)
cout<<i;
cout<<endl;
Pointer r;
Create(r,n);
int k=1;
while(r->next!=r)
{
r=r->next;
k=k+1;
if(k==m-1)
{
Remove(r);
k=0;
}
}
cout<<r->data<<endl;
}

搜索更多相关主题的帖子: 约瑟夫 Node head Pointer 
2007-05-28 13:25
xq0714xyt
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-5-29
收藏
得分:0 
FOR语句好象没有实现什么循环吧!
2007-05-29 18:47
xiaofei5202
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-7-8
收藏
得分:0 
主函数中的while循环中出了点小错误,我觉得这样改,你再试试:
while(r->next!=r)
{
k=k+1;
if(k==m)
{
Remove(r);
k=1;
}
r=r->next;
}
2007-07-11 00:29
快速回复:[求助]约瑟夫程序问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015155 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved