主题:求助大虾~!!!~!~问题出在什么地方啊?~!!!
//约瑟夫问题的解决。。。。。。调试出错了。。结果出不来。。
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
typedef struct node{
int num;
int password;
struct node *next;
}Lnode;
struct node *L;
Lnode *cjos(int n)
{
int i;
Lnode *p,*q=(Lnode *)malloc(sizeof(Lnode));
q->num=n;q->password=rand();L=q;
printf("%d\n",q->password);
for(i=n-1;i>0;i--)
{
p=(Lnode *)malloc(sizeof(Lnode));
p->num=i;p->password=rand();
L=p;
printf("%d\n",q->password);
}
q->next=L;
return L;
}
void jeseph(Lnode *h,int m)
{
int j=1;
h=L;
while(L->next!=L)
{
while (j<m)
{
L=h;
h=h->next ;
j++;
}
m=h->password;
printf("number:%d\n",h->num);
L->next =h->next ;
free(h);
}
printf("number:%d\n",L->num);
free(L); /* 让最后一个人也出列 */
}
void main()
{
Lnode *H;
int m,n;
printf("输入人数n:\n");
scanf("%d",&n);
H=cjos(n);
printf("输入初始密码m:\n");
scanf("%d",&m);
printf("出列顺序为:\n");
jeseph(H,m);
}
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
typedef struct node{
int num;
int password;
struct node *next;
}Lnode;
struct node *L;
Lnode *cjos(int n)
{
int i;
Lnode *p,*q=(Lnode *)malloc(sizeof(Lnode));
q->num=n;q->password=rand();L=q;
printf("%d\n",q->password);
for(i=n-1;i>0;i--)
{
p=(Lnode *)malloc(sizeof(Lnode));
p->num=i;p->password=rand();
L=p;
printf("%d\n",q->password);
}
q->next=L;
return L;
}
void jeseph(Lnode *h,int m)
{
int j=1;
h=L;
while(L->next!=L)
{
while (j<m)
{
L=h;
h=h->next ;
j++;
}
m=h->password;
printf("number:%d\n",h->num);
L->next =h->next ;
free(h);
}
printf("number:%d\n",L->num);
free(L); /* 让最后一个人也出列 */
}
void main()
{
Lnode *H;
int m,n;
printf("输入人数n:\n");
scanf("%d",&n);
H=cjos(n);
printf("输入初始密码m:\n");
scanf("%d",&m);
printf("出列顺序为:\n");
jeseph(H,m);
}