2017-03-15 5 views
1

Ich bin ein Anfänger der Programmierung. Ich habe eine Funktion geschrieben, um Eingaben in die verknüpfte Liste zu scannen. Aber es funktioniert nicht. Kann mir jemand helfen, das Problem zu finden?Scan-Eingänge zu verketteten Liste

ListNode *BuildList() { 
    char discard; 
    ListNode *list,*list2=NULL; 
    list = (ListNode*)malloc(sizeof(struct ListNode)); 
    if ((scanf("%d%1[^\n]s", &list->val, &discard)) == 2) { 
     list->next = BuildList(); 
     printf("%d ", list->next->val); 
    } 
    else 
    { 
     list->next = NULL; 
    } 
    return list; 
} 

und ListNode als

struct ListNode { 
    int val; 
    ListNode *next; 
}; 

Danke definiert!

+0

Willkommen bei Stack Overflow! [Bitte lesen Sie die Diskussion darüber, warum der Rückgabewert von 'malloc()' und die Familie in 'C' nicht umgewandelt werden soll.] (Http://stackoverflow.com/q/605845/2173917). –

+4

"funktioniert nicht" ist keine nützliche Problemstellung. Bitte lesen Sie diese https://ericlippert.com/2014/03/05/how-to-debug-small-programs/ – StoryTeller

+1

1) '"% d% 1 [^ \ n] s "' ist falsch. – BLUEPIXY

Antwort

0

Ich musste Ihren Code nehmen und versuchen, die Fehler zu reproduzieren, die Sie erhalten. Ihr Code sieht gut aus, außer dass es Kompilierungsfehler gibt, da es den Typ für ListNode nicht ableitet. Typische Fehler sind immer ich, dass ich glaube, Sie sind:

test.c:11:5: error: unknown type name ‘ListNode’ 
    ListNode *list,*list2=NULL; 

Es gibt zwei Lösungsalternativen:

One, die Struktur Definition ändern, wie unten. Mit diesem Ansatz funktioniert Ihr Code wie ein Zauber.

typedef struct ListNode { 
    int val; 
    struct ListNode *next; 
} ListNode; 

Zwei, die Definition Ihrer Struktur beibehalten, aber jede Struktur Variablendeklaration mit Stichwort struct vorangestellt werden. Z.B; statt tun struct ListNode *list,*list2=NULL;

Ich habe versucht, Ihren Code zu laufen, die Beispieleingabe, und produzierte Ausgabe ist unten. Ich hoffe, dass Sie erwarten, dass sich Ihre Funktion so verhält.

1 2 3 4 5 6 7 8 9 // <- input 
9 8 7 6 5 4 3 2 // <- output 
Verwandte Themen