坑爹的错误:codeblocks下完全没问题,提交就错了。。。
Runtime Error:Segmentation fault
辅助解释:Segmentation fault:段错误,检查是否有数组越界,指针异常,访问到不应该访问的内存区域
#include<iostream>
using namespace std;
#define NULL 0
struct LinkList
{
int num;
LinkList* next;
};
LinkList *creatlink(int n)//建立
{
LinkList *p=new LinkList,*head,*p1;
cin>>p->num;
head=NULL;
while(n!=0)
{
if(head==NULL)
{
n--;
head=p;
}
else
p1->next=p;
p1=p;
p=new LinkList;
cin>>p->num;
n--;
}
p1->next=p;
p1->next->next=NULL;
return head;
}
LinkList* deletelink(LinkList *head)
{
LinkList *p1,*p2=head;
while(p2!=NULL)
{
if(p2->num==p2->next->num)
{
p1->next=p2->next;
break;
}
else
{
p1=p2;
p2=p2->next;
}
}
return head;
}
void printlink(LinkList *head)//链表输出
{
while(head!=NULL)
{
cout<<head->num<<" ";
head=head->next;
}
}
int main()
{
int n;
cin>>n;
LinkList *head;
head=creatlink(n);
head=deletelink(head);
printlink(head);
return 0;
}
哪错了,求大神指导。。。。。。。。。。。。
。
。
。
。
段错误:
一般都是非法内存操作,例如数组越界,例如申请a[5],却访问到a[5]或者a[6],这也会有很多情况,可能是循环操作时循环变量控制有问题,可能是字符串拷贝时长度发生溢出
指针指向了非法内存,例如申明一个指针,但是没有对指针进行初始化,直接就引用,或者引用里面的元素或者函数,或者没有分配内存就进行释放等,另外,申请内存还要检查是否申请成功,如果没有申请成功也会出现这种情况