2017-06-26 2 views
0

Das ist der Fehler, den ich bekomme. Ich versuche, verkettete Listen in der Sprache c zu implementieren.Verknüpfte Listen in C, 'Knoten' nicht deklariert (erste Verwendung in dieser Funktion)

Prog.c: In Funktion 'Einfügen': prog.c: 33: 26: Fehler: 'Knoten' nicht deklariert (erste Verwendung in dieser Funktion) struct Knoten * temp = (Knoten *) malloc (sizeof (struct Knoten));

der Code wie unten

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

struct node{ 
    int data; 
    struct node* next; 
}; 

struct node* head; 

void Insert(int x); 
void Print(); 

int main(void){ 

    head = NULL; 
    printf("how many numbers?"); 
    int n,i,x; 
    scanf("%d",&n); 

    for(i=0;i<n;i++){ 
     printf("Enter the number"); 
     sacnf("%d",&x); 
     Insert(x); 
     Print(); 
    } 

    return 0; 
} 

void Insert(int x){ 

    struct node* temp = (node*)malloc(sizeof(struct node)); 
    temp->data = x; 
    (*temp).next = head; 
    head = temp; 
} 

void Print(){ 

    struct node* temp = head; 
    printf("\nThe List is "); 
    while(temp!=NULL){ 
     printf(" %d", temp->data); 
     temp=temp->next; 
    } 
} 
+1

ist Es gibt keine 'node'. Es gibt 'struct node'. C ist nicht C++. Und [stoppe Casting "malloc" in C-Programmen] (https://stackoverflow.com/questions/605845/do-i-cast-the-result-of-malloc) unabhängig. – WhozCraig

+0

In C müssen Sie 'typedef' verwenden, wenn Sie einen Strukturnamen als eigenständigen Typ verwenden möchten. – Barmar

+0

das hat funktioniert .. danke. –

Antwort

2

Das Problem steht im Einklang struct node* temp = (node*)malloc(sizeof(struct node)); der Funktion void Insert(int x), sollte es struct node* temp = (struct node*)malloc(sizeof(struct node)); sein. Sie können den korrigierten und funktionierenden Code Here finden.

Hinweis Entsprechend sacnf("%d",&x); der Funktion main(void), soll es scanf("%d",&x);

Verwandte Themen