主题:谁能帮忙看下,一个简单题目.不胜感激
我刚开数据结构.
这个是那个JOESPH问题
n个人,从s个人开始,没m个人删去.
要你输出次序.
以下是我写的.请大家帮我看下,我会给分,不会让你们白看的.
再次感谢.
#include<iostream>
using namespace std;
class ChainNode
{
friend class Chain;
private:
int data;
ChainNode *link;
};
class Chain
{
public:
void fn(int n,int s,int m);
private:
ChainNode *first;
};
void Chain::fn(int n,int s,int m)
{
if(n<=0||s<=0||m<=0) return;//如果不符合条件(EG,n=-10)
first = new ChainNode;
ChainNode *p,*q;
first->data=1;
first->link=first;//设置第一个结点,又因为它是循环链表
p=first;//活动指针
for(int i=2;i<n+1;i++)
{//构建n个结点的链表,且给每个结点赋值
ChainNode *s=new ChainNode;
s->data=i;
p->link=s;
s->link=p->link;
p=s;
}
p=first;
for(int j=1;j<s;j++)//找第s个位置,p指向s
p=p->link;
while(n-1)
{
for(int k=1;k<m-1;k++)
p=p->link;//找到第s+m-1,即该删的前一项
q=p->link;
p->link=q->link;
p=q->link;//下把从删的结点后面继续查
cout<<q->data<<endl;
delete q;
n--;
}
}
void main()
{
Chain a;
a.fn(10,2,3);
}
这里我就简单写了下,也没弄其他函数
zaiciganxie
这个是那个JOESPH问题
n个人,从s个人开始,没m个人删去.
要你输出次序.
以下是我写的.请大家帮我看下,我会给分,不会让你们白看的.
再次感谢.
#include<iostream>
using namespace std;
class ChainNode
{
friend class Chain;
private:
int data;
ChainNode *link;
};
class Chain
{
public:
void fn(int n,int s,int m);
private:
ChainNode *first;
};
void Chain::fn(int n,int s,int m)
{
if(n<=0||s<=0||m<=0) return;//如果不符合条件(EG,n=-10)
first = new ChainNode;
ChainNode *p,*q;
first->data=1;
first->link=first;//设置第一个结点,又因为它是循环链表
p=first;//活动指针
for(int i=2;i<n+1;i++)
{//构建n个结点的链表,且给每个结点赋值
ChainNode *s=new ChainNode;
s->data=i;
p->link=s;
s->link=p->link;
p=s;
}
p=first;
for(int j=1;j<s;j++)//找第s个位置,p指向s
p=p->link;
while(n-1)
{
for(int k=1;k<m-1;k++)
p=p->link;//找到第s+m-1,即该删的前一项
q=p->link;
p->link=q->link;
p=q->link;//下把从删的结点后面继续查
cout<<q->data<<endl;
delete q;
n--;
}
}
void main()
{
Chain a;
a.fn(10,2,3);
}
这里我就简单写了下,也没弄其他函数
zaiciganxie