链队列约瑟夫环c++代码_c++单循环链表的约瑟夫环问题,要求输出全部出队顺序。程序挂掉了~求解释哇...

//test1.cpp

#include

using namespace std;

int m,n,k,i,j;

int a[]={};

template

struct Node

{

int data;

struct Node*next;

};

template

class Clinklist

{

public:

void Set(T a[],int n);

void Delete();

void Move();

~Clinklist();

private:

Node*rear;

Node*p;

Node*q;

Node*r;

};

template

void Clinklist::Set(T a[],int n)

{

rear->next=rear;

p=rear;

for(i=n-1;i>=0;i--)

{

Node *s=new Node;

s->data=a[i];

rear->next=s;

s->next=r;

r=s;

}

}

template

void Clinklist::Delete()

{

if(p->next==rear)

{

q=p->next;

p->next=rear->next;

rear=p;

p=p->next;

delete q;

n=n-1;

}

else

{

q=p->next;

p=p->next;

delete q;

n=n-1;

}

}

template

void Clinklist::Move()

{

if(i<=n-m-1){i=i+m-2;}

if(i>=n-m){i=i+m-2-n;}

for(j=0;j<=m-3;j++)

{p=p->next;}

cout<

}

template

Clinklist::~Clinklist()

{

p=rear->next;

if(rear->next!=rear)

{

q=p->next;

delete p;

p=q;

}

else

delete rear;

delete p;

delete q;

}

int main()

{

cout<

cin>>m;

cout<

if(m<1)

{

cout<

cout<

cin>>m;

cout<

}

cout<

cin>>n;

cout<

if(n<1)

{

cout<

cout<

cin>>n;

cout<

}

cout<

cin>>k;

if(k<1||k>n)

{

cout<

cout<

cin>>k;

}

int a[n];

for(i=0;i++;i<=n-1){a[i]=i+1;}

i=k;

Clinklist Joseph();

while(n>1)

{

Joseph.Move();

Joseph.Delete();

}

Joseph.~Clinklist();

system("pause");

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值