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

在浙大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
    说明你访问到了未分配的空间
    可能你数组开小了
    或者你访问到了已经被释放的空间了

    评论

报告相同问题?

悬赏问题

  • ¥50 汇编语言除法溢出问题
  • ¥65 C++实现删除N个数据列表共有的元素
  • ¥15 Visual Studio问题
  • ¥15 state显示变量是字符串形式,但是仍然红色,无法引用,并显示类型不匹配
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波
  • ¥15 针对曲面部件的制孔路径规划,大家有什么思路吗