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



嗨,我是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; 
}

第一次插入:

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

*sPtr等于NULL。您正在取消对此的引用,这将导致q->nextPtr;上的seg故障。

相关内容

  • 没有找到相关文章

最新更新