我自己写的约瑟夫环,求助

来源:百度知道 编辑:UC知道 时间:2024/05/28 11:26:53
代码如下:
#include<iostream.h>
#include<malloc.h>

typedef struct lnode{
int position;
int password;
struct lnode *next;
}lnode,*linklist;

void creatlist(int n,linklist & p){
linklist t;
while(n>1){
t=(linklist)malloc(sizeof(lnode));
t->next=p->next;
p->next=t;
n--;
}
}

void inputpassword(int n,linklist & p){
int no,pw;
no=1;
do{
cin>>pw;
p->password=pw;
p->position=no;
no++;
cout<<p->position<<" "<<p->password;
}while(no<=n);

}

void gostar(int s,linklist & p){
while(s>1){
p=p->next;
s--;
}
}

void main(){
int n,s;
linklist p,t;
p=(linklist)malloc(sizeof(lnode));
p->next=p;
cout<<"input people number";
cin>>n;
c

inputpassword漏了p=p->next;
这样就相当于一直在给一个节点赋值

还有
while(p!=p->next){
gostar(s,p);
cout<<p->position;
s=p->password;
t=p;
p=p->next;//你只是将指针指到此节点后面的节点,但是没将前面的节点连起来,这样就无法构成封闭环了
free(t);
}