高分求解c++约瑟夫环问题

来源:百度知道 编辑:UC知道 时间:2024/06/03 07:22:44
本人刚学c++下边是我自己编的一个解决约瑟夫环问题的c++的程序 应该有很多错误帮我解决一下吧··
#include <iostream>
using namespace std;
typedef struct Node{
int data;
struct Node *next;
}Lnode,*LinkList;
LinkList creat(int num)
{
LinkList L;
Lnode *s,*r,*n;
L=r=NULL;
for(int i=1;i<=num;i++)
{
s=new Lnode;
s->data=num;
if(L==NULL)
{
L=s;
n=new Lnode;
n->next=s->next;
}
else if(i=num)
r->next=n->next;
else
{
r->next=s;
r=s;
}
}
return L;
}
int *Get(LinkList L,int step){
Lnode *p,*s;
p=L;
while(L!=NULL)
{
for(int i=1;i<=step;i++)
{
s=p->next;
p=p->next;
cout<<p->data;
s->next=p->next;
delete p;
}
}
return 0;
}
int main(){
int num,step;
LinkList L;
cin>>

#include <iostream>
using namespace std;
typedef struct Node
{
int data;
struct Node * next;
}Lnode,*LinkList;
LinkList Creat(int num){
LinkList L;
Lnode *s,*r,*head;
int i=1;
L=r=NULL;
while(1){
s=new Lnode;
s->data=i;
i++;
if(L==NULL)
{ L=s;
head=L;
}
else
r->next=s;
r=s;
if(i==num+1)break;
}
r->next=head;
return L;
}
int out(LinkList L,int num,int step){
Lnode *p,*s,*n;
p=L;
for(int i=1;i<=num;i++)
{
int count=1;
//用count定位到第m个人,循环后,p1指向这个人,p2指向这个人的上一个人
while(count++<=step)
{
s=p;
p=p->next;
}

cout<<p->data<<" ";//输出当前人的编号
n=p;//p指向当前这个人
s->next=p->next;//把当前的人前的人和当前的人后的人连上.
p=p->next;//下次从当前的人的下一个人开始数
delete n;//把这个人删除(就是释放这块内存)
}
/*
int i=0;
while(1){
for(int j=0;j<ste