高分悬赏 请各位大虾看看下面的程序出了什么问题,帮帮忙!

iamltlb 2005-11-20 10:30:00
#include<iostream.h>
class CircList;
class CircListNode{
friend class CircList;
private:
int data;
CircListNode*next;
public:
CircListNode(int d=0):next(NULL){data=d;}
};
class CircList{
private:
CircListNode*first,*current;
public:
CircList();
~CircList(){delete first; first=first->next=NULL;}
void Insert(int i,int value);
int Remove();
void Move(int s);
void Next(int m);
int Getdata(){return first->data;}
};
CircList::CircList():first(NULL),current(NULL){ }
void CircList::Insert(int i,int value){

if(first==NULL||i==1)
{
first=new CircListNode(0);
first->next=first;
first->data=value;
current=first;}
else{
CircListNode*p=new CircListNode(1);
p->data=value;
for(int j=i;j>2;j--)
first=first->next;
p->next=first->next;
first->next=p;
}
current=first;
cout<<"输入完毕";
}
void CircList::Next(int m){
for(int j=m;j>2;j++){
first=current;
first=first->next;}}
int CircList::Remove(){
CircListNode*q;
q=first->next;
first->next=q->next;
q->next=NULL;
return q->data;}
void CircList::Move(int s){
for(int j=s;j>1;j++)
first=first->next;}
void jose(int n,int m){
CircList a;
for(int i=0;i<n-1;i++)
{
if(i%m==0){
a.Next(m);
cout<<a.Remove()<<"出局!"<<endl;}}
cout<<a.Getdata()<<"胜出!"<<endl;
}
void main(){
int s,n,m;
CircList b;
cout<<"请输入起始位置,报数长度,总人数 "<<endl;
cin>>s>>m>>n;
if((s>0&&s<=n)&&(m>0&&m<=n)){
for(int i=1;i<=n;i++)
b.Insert(i,i);
b.Move(s);
jose(n,m);}
else
cout<<"数据错误 ,请重新输入!"<<endl;

}



...全文
133 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
fiftymetre 2005-11-20
  • 打赏
  • 举报
回复
能用就不错了
csucdl 2005-11-20
  • 打赏
  • 举报
回复
高分悬赏也没用,不写注释,又不说明题意
snowbirdfly 2005-11-20
  • 打赏
  • 举报
回复
楼主这么经典的问题可以直接到全文检索里面找到~~~
直接输入约瑟夫问题就会显示好多~~~
lxb365 2005-11-20
  • 打赏
  • 举报
回复
你这个程序可以说是漏洞百出,错的地方实在太多了,建议你去看看关于循环链表的C++实现,看看别人是怎么写的。

happydivid 2005-11-20
  • 打赏
  • 举报
回复
楼主的是约瑟夫问题吧,我这儿也是通过写一个类来实现的。可以互相交流下
http://blog.csdn.net/happydivid/archive/2005/10/28/518727.aspx

64,681

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧