约瑟夫环问题找不到错误·~帮忙解决下!!

qlj86314901 2008-10-22 10:04:31
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
typedef int DataType;
class Node
{
friend class LinkList;
private:
int num;
Node* next;
DataType code;
public:
Node(int i,const DataType& x);
};
Node::Node(int i,const DataType& x)
{
num=i;
code=x;
next=NULL;
}
class LinkList
{
private:
Node* head;
public:
int size;
LinkList();
void Insert();
void Print();
void ysf(const DataType x);
DataType GetData(int i);
};

LinkList::LinkList()
{
size=0;
}
void LinkList::ysf(const DataType x)
{
Node* p;
Node* q;
Node* r;
DataType n=x;
DataType i=1;
p=head;
while(size!=0)
{
while(i<=n-2)
{
p=p->next;
i++;
}
q=p->next;
p->next=q->next;
cout<<q->num<<q->code<<" ";

n=q->code;
delete q;
p=p->next;
size--;
}
}
void LinkList::Insert()

{
int a[7]={3,1,7,2,4,8,4};
int i=0;
Node* p;
Node* q;

head=new Node(1,a[0]);
p=head;
size++;
for(i=2;i<=7;i++)
{
q=new Node(i,a[i-1]);
p->next=q;
p=p->next;
size++;
}
q->next=head;//尾连头
}
void LinkList::Print()
{
Node* p;
p = head;
for(int i=0;i<=6;i++)
{
cout<<p->code<<" ";
p=p->next;
}
cout<<endl;
}

void main()
{
LinkList L;
L.Insert();
L.Print();
L.ysf(20);
}
正确的结果应该是
3,1,7,2,4,8,4
6,1,4,7,2,3,5
...全文
85 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
太乙 2008-10-23
  • 打赏
  • 举报
回复
lz不着急,一步步慢慢来看,断点调试嘛!写程序急不得!

你的代码,逻辑你最清楚,调试起来也简单些!lz加油!!!
太乙 2008-10-23
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 fableboy 的回复:]
^_代码也要照顾下大家的耐性吗;

C/C++ code
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
typedef int DataType;
class Node
{
friend class LinkList;
private:
int num;
Node* next;
DataType code;
public:
Node(int i,const DataType& x);
};
Node::Node(int i,const DataType& x)
{
num=i;
code=x;
next=NULL;
}
class LinkList
{
private:
Node* he…
[/Quote]

不行啊,兄弟,你这调整的不好:

#include <iostream.h> 
#include <conio.h>
#include <stdlib.h>
typedef int DataType;
class Node
{
friend class LinkList;
private:
int num;
Node* next;
DataType code;
public:
Node(int i,const DataType& x);
};
Node::Node(int i,const DataType& x)
{
num=i;
code=x;
next=NULL;
}
class LinkList
{
private:
Node* head;
public:
int size;
LinkList();
void Insert();
void Print();
void ysf(const DataType x);
DataType GetData(int i);
};

LinkList::LinkList()
{
size=0;
}
void LinkList::ysf(const DataType x)
{
Node* p;
Node* q;
Node* r;
DataType n=x;
DataType i=1;
p=head;
while(size!=0)
{
while(i <=n-2)
{
p=p->next;
i++;
}
q=p->next;
p->next=q->next;
cout <<q->num <<q->code <<" ";

n=q->code;
delete q;
p=p->next;
size--;
}
}
void LinkList::Insert()

{
int a[7]={3,1,7,2,4,8,4};
int i=0;
Node* p;
Node* q;

head=new Node(1,a[0]);
p=head;
size++;
for(i=2;i <=7;i++)
{
q=new Node(i,a[i-1]);
p->next=q;
p=p->next;
size++;
}
q->next=head;//尾连头
}
void LinkList::Print()
{
Node* p;
p = head;
for(int i=0;i <=6;i++)
{
cout <<p->code <<" ";
p=p->next;
}
cout <<endl;
}

void main()
{
LinkList L;
L.Insert();
L.Print();
L.ysf(20);
}

qlj86314901 2008-10-23
  • 打赏
  • 举报
回复
怎么段点调试啊~ 上课都没教这些·~
帮帮忙
xuegao007 2008-10-22
  • 打赏
  • 举报
回复
跟踪一下不就知道了么,这种问题谁有空帮你调啊.
xuegao007 2008-10-22
  • 打赏
  • 举报
回复
非递推公式,J(n)为n的二进制形式循环左移一位
jakqigle 2008-10-22
  • 打赏
  • 举报
回复
^_代码也要照顾下大家的耐性吗;

#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
typedef int DataType;
class Node
{
friend class LinkList;
private:
int num;
Node* next;
DataType code;
public:
Node(int i,const DataType& x);
};
Node::Node(int i,const DataType& x)
{
num=i;
code=x;
next=NULL;
}
class LinkList
{
private:
Node* head;
public:
int size;
LinkList();
void Insert();
void Print();
void ysf(const DataType x);
DataType GetData(int i);
};

LinkList::LinkList()
{
size=0;
}
void LinkList::ysf(const DataType x)
{
Node* p;
Node* q;
Node* r;
DataType n=x;
DataType i=1;
p=head;
while(size!=0)
{
while(i <=n-2)
{
p=p->next;
i++;
}
q=p->next;
p->next=q->next;
cout < <q->num < <q->code < <" ";

n=q->code;
delete q;
p=p->next;
size--;
}
}
void LinkList::Insert()

{
int a[7]={3,1,7,2,4,8,4};
int i=0;
Node* p;
Node* q;

head=new Node(1,a[0]);
p=head;
size++;
for(i=2;i <=7;i++)
{
q=new Node(i,a[i-1]);
p->next=q;
p=p->next;
size++;
}
q->next=head;//尾连头
}
void LinkList::Print()
{
Node* p;
p = head;
for(int i=0;i <=6;i++)
{
cout < <p->code < <" ";
p=p->next;
}
cout < <endl;
}

void main()
{
LinkList L;
L.Insert();
L.Print();
L.ysf(20);
}

AlwaysSLH 2008-10-22
  • 打赏
  • 举报
回复
非递推公式,J(n)为n的二进制形式循环左移一位
即:
AlwaysSLH 2008-10-22
  • 打赏
  • 举报
回复
递推公式:
J(2*k) = 2 * J(k) - 1
J(2*k+1) = 2 * J(k) + 1
beingstudio 2008-10-22
  • 打赏
  • 举报
回复
不说话
走人
overbai 2008-10-22
  • 打赏
  • 举报
回复
算了!
你这个算法,真的很难整!
你也给点注释啊!

65,210

社区成员

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

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