mian199614
mian199614
2016-05-26 03:29

在浙大OJ系统提交1978题代码一直出现Segmentation Fault!!!!!!!

10

在Linux环境里编译运行都成功。但是在ACM平台上提交代码时就一直出现Segmentation Fault 错误。自己的代码看了很久都没发现错误,运行又都是正确的。好烦躁。ACM所用的编译器时C(gcc 4.7.2)
题号1978。。有哪位大侠有时间可以修改然后拿去试试能不能AC。跪谢。。
#include
#include
typedef struct List{ //构造链表,代表参赛者的队列。
int i;
struct List *next;
}List;
void Select(List *head,int *nNumber);
int main(void)
{
int nNumber[1000];
int i=0,j,w;
List *q,*p;
List head;
q=(List *)malloc(sizeof(List));
head.next=q;
q->i=2;
printf("Sample Input\n");
do{
printf("请输入第%d个n值:",i+1);
scanf("%d",&nNumber[i]);
i++;
}while(nNumber[i-1]!=0);
for(j=3;j {
p=(List *)malloc(sizeof(List));
p->i=j;
q->next=p;
p->next=NULL;
q=p;
}
Select(&head,nNumber);//调用Select函数,返回只有幸运参赛者存在的链表
q=head.next;
for(j=0;j {
for(w=1;w {
q=q->next;
}
printf("%d\n",q->i);
q=head.next;
}
}
void Select(List *head,int *nNumber)//通过遍历链表,删除所有的需要打工的参赛者结点。
{
int i=0,max=nNumber[i],j;
List *q,*p,*q1;
p=head->next;
while(nNumber[i]!=0){
if(max max=nNumber[i];
i++;
}
for(j=0;j {
q=p;
while(q->next!=NULL)//开始循环删除
{
for(i=1;ii;i++)
{
if(q->next!=NULL)
q=q->next;
else break;
}
if(q->next==NULL)
break;
q1=q->next;
q->next=q1->next;
free(q1);
}
p=p->next;
}
}

  • 点赞
  • 回答
  • 收藏
  • 复制链接分享

2条回答