C 错误(分段错误核心转储)-列表和结构指针

C 错误(分段错误核心转储)-列表和结构指针,c,list,pointers,struct,segmentation-fault,C,List,Pointers,Struct,Segmentation Fault,嗨,我是C编程的初学者;我试图学习列表和指向结构的指针。在这里,我的程序使用指针一个接一个地实现一个列表元素。有人能告诉我为什么它会给我错误分割错误吗 #include<stdio.h> #include<stdlib.h> struct ListNode{ int x; struct ListNode* nextPtr; }; typedef struct ListNode ListNode; typedef ListNode* Lis

嗨,我是C编程的初学者;我试图学习列表和指向结构的指针。在这里,我的程序使用指针一个接一个地实现一个列表元素。有人能告诉我为什么它会给我错误分割错误吗

#include<stdio.h> 
#include<stdlib.h> 

struct ListNode{ 
    int x; 
    struct ListNode* nextPtr; 
}; 

typedef struct ListNode ListNode; 
typedef ListNode* ListNodePtr; 

void insert(ListNodePtr* sPtr, int n); 

int main() 
{ 
    int f; 

    scanf("%d", &f); 
    ListNodePtr startPtr=NULL; 

    while(f!=-1) 
    { 
        insert(&startPtr, f); 

        scanf("%d",&f); 
        printf("/n"); 
    } 

    return 0; 
} 

void insert(ListNodePtr* sPtr, int n) 
{ 
    ListNodePtr newPtr; 

    newPtr=malloc(sizeof(ListNode)); 

    if(newPtr!=NULL) 
    { 
        newPtr->x=n; 
        newPtr->nextPtr=NULL; 
    } 

    ListNodePtr q,w; 

    q=*sPtr; 
    w=q->nextPtr; 

    while(w!=NULL) 
    { 
        q=w; 
        w=q->nextPtr; 
    } 

    w=newPtr; 
}
#包括
#包括
结构ListNode{
int x;
结构列表节点*nextPtr;
}; 
类型定义结构ListNode ListNode;
typedef ListNode*ListNodePtr;
无效插入(ListNodePtr*sPtr,int n);
int main()
{ 
int f;
scanf(“%d”、&f);
ListNodePtr startPtr=NULL;
而(f!=-1)
{ 
插入(&startPtr,f);
scanf(“%d”、&f);
printf(“/n”);
} 
返回0;
} 
无效插入(ListNodePtr*sPtr,int n)
{ 
ListNodePtr-newPtr;
newPtr=malloc(sizeof(ListNode));
如果(newPtr!=NULL)
{ 
newPtr->x=n;
newPtr->nextPtr=NULL;
} 
ListNodePtr q,w;
q=*sPtr;
w=q->NEXTPTTR;
while(w!=NULL)
{ 
q=w;
w=q->NEXTPTTR;
} 
w=新PTR;
}

首次插入时:

q=*sPtr; 
w=q->nextPtr; 

*sPtr
等于NULL。您正在解除引用,这将导致
q->nextPtr上的seg故障

OP为什么要回滚我所做的编辑以使代码更易于阅读?因为谁真正想要缩进和语法突出显示P@MichaelDorganpffftttt撤消回滚以恢复缩进和语法高亮显示..:干得好!是的,你知道。老实说,我一直在等待OP通过再次回滚来控制我们俩……是的,我知道你的意思,我想OP通过回滚来控制我!除息的