循环链表求助。。。为什么运行不了
n只猴子选国王问题:所以的猴子围成一圈,先从第一只猴子开始报数,报到13的猴子出列,依次重复,每一轮报数都比上一轮少1,知道报数减到1后,又从13开始报数,重复到剩下最后一只就是猴王。#include<stdio.h>
#include<stdlib.h>
#define null 0
#define ok 1
#define error 0
#define overlow -2;
typedef status;
typedef elemtype;
typedef struct king{
elemtype data;
struct king *next;
}King;
King *s;
status greatlist(King *l,int n)
{King *p,*q;
int i;
for (i=n;i>0;i--)
{p=(King*)malloc(sizeof(King));
if(p==null) return overlow;
p->data=i;
p->next=l;
l=p;
}
q->next=l;
s=l;
return ok;}
status Kings(King *l,int n)
{ King *p,*q;
int i,k;
l=null;
for(k=1;k<13;k--)
{if(k==0) return k=13;
for(i=0;i<k;i++)
p=p->next;
q=p->next;
printf("%d",q->data);
if(p->next==p)
break;
else {p->next=q->next;
p=p->next;
free(q);}
printf("%d",p->data);
}
int main()
{int n;
King *l;
printf("houzishu");
scanf("%d",&n);
greatlist(l,n);
Kings(l,n);
return 0;}
[ 本帖最后由 nan1888 于 2011-7-22 20:56 编辑 ]