约瑟夫环程序有点小问题
# include<stdio.h>
# include<malloc.h>
typedef struct Node
{
int id;
int mima;
struct Node *next;
}Node,*Linklist;
void Create(Linklist &L,int num) //创建
{
L=(Node*)malloc(sizeof(Linklist));
L->id=0;
L->mima=0;
L->next=L;
Node *r,*s;
r=L;
int j=1;
while(num--)
{
s=(Node*)malloc(sizeof(Linklist));
printf("\n请输入第%d结点的ID和密码:\t",j);
j++;
scanf("%d",&s->id);
scanf("%d",&s->mima);
r->next=s;
r=s;
}
r->next=L;
}
void Delete(Linklist &L,Linklist &P,Linklist T) //删除
{
P->next=T->next;
free(T);
}
Linklist loca(Linklist &L,int *n) //查找-
{
Node *s;
for(int i=1;i<*n;i++)
{
L=L->next;
}
s=L->next;
*n=s->mima;
return s;
}
int main()
{
Linklist L,P,T; //T是中间量 P是为了重新连接环的量 L是要改的量
int num,mima;
printf("人数 和 初始密码 为\t");
scanf("%d%d",&num,&mima);
Create(L,num);
P=L;
for(int i=1;i<=num;i++)
{
T=loca(P,&mima);
printf("%d\t ",T->id);
Delete(L,P,T);
}
return 0;
}
执行结果:
人数 和 初始密码 为 5
2
请输入第1结点的ID和密码: 1
2
请输入第2结点的ID和密码: 2
1
请输入第3结点的ID和密码: 3
3
请输入第4结点的ID和密码: 4
2
请输入第5结点的ID和密码: 5
2
2 3 0 1 5
--------------------------------
Process exited with return value 0
Press any key to continue . . .
结果里面有一个不知道问题 出现地址应该是有一个值没有被赋值上!不知道怎么办