2016-05-11 8 views
-3

Hallo ich bin ein Anfänger in C-Programmierung; Ich versuche, Liste und Zeiger auf eine Struktur zu lernen. Hier ist mein Programm um ein Listenelement nach Element mit Zeigern zu implementieren. Kann mir jemand sagen, warum es mir Fehlersegmentierung Fehler Core Dumps gibt?Fehler (Segmentierungsfehler Core Dumped) - Listen- und Strukturzeiger

#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; 
} 
+3

OP Warum haben Sie die Bearbeitung rückgängig gemacht, um den Code lesbarer zu machen? – t0mm13b

+2

Denn wer möchte wirklich Einrückung und Syntax-Highlighting? : P –

+0

@MichaelDorgan pffftttt einen Rollback rückgängig machen, um zurück zum Einzug und Syntax-Highlighting ..: P nice job! – t0mm13b

Antwort

1

Das erste Mal durch Ihren Einsatz:

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

*sPtr gleich NULL. Sie deneferenzieren dies, was einen Seg-Fehler auf q->nextPtr; verursacht.

Verwandte Themen