我是编的解决约瑟夫问题的 程序,现在要上课去了 ,没时间详细注释,源程序如下:
#include <stdio.h>
#include <malloc.h>
#define N 10
#define S 3
#define M 4
typedef struct node
{
int data;
struct node *next;
}round;
round *h;
round *creat()
{
round *p,*t;
int i;
h=(round*)malloc(sizeof(round));
h->next=NULL;
t=h;
for(i=1;i<=N;i++)
{
p=(round*)malloc(sizeof(round));
p->data=i;
p->next=NULL;
t->next=p;
t=p;
}
p->next=h->next;
p=h->next;
for(i=0;i<N;i++)
{
printf(" %d",p->data);
p=p->next;
}
printf("\n");
return(h);
}
round *new()
{
round *p,*q;
int i,n=0,a[N];
p=(round*)malloc(sizeof(round));
p->next=NULL;
p=h->next;
for(i=1;i<S;i++) p=p->next;
while(h->next!=NULL)
{
q=(round*)malloc(sizeof(round));
q->next=NULL;
for(i=1;i<M-1;i++) p=p->next;
q=p->next;
a[n]=q->data;
n++;
p->next=q->next;
free(q);
}
for(i=0;i<N;i++)
printf("%d",a[i]);
printf("\n");
}
void main()
{
creat();
new();
}
编译没错,但是 一运行就自动关闭C程序,不知道是 什么原因!
谢谢指点,我等会儿在详细注释,请大家先帮忙找找原因!!!
谢谢