主题:程序问题困惑
此程序是一个约瑟夫环的问题,但是我写的程序不知道为什么,
总是连接有错误,
希望谁能帮我在原程序的基础上改动一下。谢谢。
#include <iostream>
#include <malloc.h>
#include <memory.h>
using namespace std;
int Joseph(int n,int s,int m);
typedef struct Lnode
{
int number;
struct Lnode *next;
}LinkList;
int n,s,m;
void main()
{
cout<<"有n个人在圆桌周围,从第s个开始报数,数到第m的人出列";
cin>>n>>s>>m;
Joseph(n, s, m);
}
int Joseph(int n,int s,int m)
{//约瑟夫环问题
int i,j;
LinkList *creatlinklist(int n);
LinkList *h,*p,*q,*r;
if(n<s) return 0;
h=creatlinklist(n);
q=h;
for(i=1;i<s;i++)
q=q->next;
p=q->next;
for(i=1;i<n;i++)
{
for(j=1;j<m;j++)
if((q->next!=NULL)&&(p->next!=NULL))
{
q=q->next;
p=q->next;
}
else
if(p->next==NULL)
{
q=q->next;
p=h->next;
}
else
{
q=h->next;
p=p->next;
}
cout<<p->next<<endl;
r=p;
if(p->next==NULL)
{
p=h->next;
q->next=NULL;
}
else
{
p=p->next;
if(q->next!=NULL)
q->next=p;
else
h->next=p;
}
free(r);
}
cout<<(h->next)->number<<endl;
}