求助。。。链表为什么运行不了
狐狸要吃兔子,但兔子藏在10个洞中的其中一个,狐狸先从1号洞找,第二次隔1个洞找(即3号洞)。第三次隔两个洞找,即(6号洞),找了1000次,都每找到兔子,问兔子在哪里。#include<stdio.h>
#include<stdlib.h>
#define null 0
#define overlow -2
#define ok 1
#define error 0
typedef int status;
typedef int elemtype;
#define list 10
typedef struct LNode{
elemtype data;
struct LNode *next;
}LNode;
LNode *s;
status greatlist(LNode *l) 建立10个洞的链表
{int j;
LNode *p;
l=(LNode*)malloc(sizeof(LNode));
l->next=null;
for(j=0;j<list;j++)
{p=(LNode*)malloc(sizeof(LNode));
if(p==null) return overlow;
p->data=1; 狐狸每进的洞用1标记
p->next=l->next;
l->next=p;
}
s=l;
}
status rabbit(LNode *l)
{int i;
int count=0;
int k;
LNode *p;
if(!greatlist(l)) return error;
p=s;
p->next=0; 狐狸进了第一个洞,用0表示
for(i=0;i<list-2;i++)
{p=p->next;}
p->next=0;
for(i=2;i<1001;i++)
{count=(count+i)%list; 实现链表循环
for(k=2;k<count;k++)
{p=p->next;}
p->next=0;} 进过的洞标记为0
printf("kkkkk");
for(i=0;i<list;i++)
{p=p->next;
if(p->data==1)
printf(p->data); 输出未进过的洞
}
void main()
{LNode *l;
l=null;
greatlist(l);
rabbit(l);
getch();}
[ 本帖最后由 nan1888 于 2011-7-22 20:55 编辑 ]