mian199614 2016-05-26 03:29 采纳率: 0%
浏览 1709
已结题

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

在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条回答 默认 最新

  • DASEason 2016-05-28 06:36
    关注

    Segmentation Fault
    说明你访问到了未分配的空间
    可能你数组开小了
    或者你访问到了已经被释放的空间了

    评论

报告相同问题?

悬赏问题

  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办