2016-06-25 25 views
0

einige Probleme mit verknüpften Listen in C. MitErstellen einer generischen verknüpften Liste in C

Um eine verknüpfte Liste erstelle ich die folgenden Schritte in Betracht ziehen würden:

  • den Knoten mit dem Datentyp erstellen und ein Zeiger macht den nächsten Knoten;

  • den Verweis auf den ersten Knoten (Kopf) oder keinen Knoten erstellen, head == null;

dann erstellen Sie die Funktionen, die mit der Liste arbeiten.

Mein Hauptproblem ist char Array und Zeiger. Ich würde einfach eine generische verkettete Liste lieben. Die, nach denen ich gesucht habe, sind viel zu kompliziert.

struct nodeCategoria { 
    int ident; 
    char design[MAX]; 
    struct nodeCategoria* next; 
}; 

struct nodeCategoria* headCat; 

void insereCat(){ 
    int ident1; 
    char arr[MAX]; 
    struct nodeCategoria* novo; 

    printf("Identificacao : "); 
    scanf("%d", &ident1); 
    printf("Designacao : "); 
    novo->ident = ident1; 
    novo->design = scanf("%c[^\n]"); 
} 
+1

Schauen Sie, was Sie tun: Erstellen Sie einen Zeiger auf "struct nodeCategoria", aber nicht auf etwas zeigen. Woher soll die Erinnerung kommen? 'novo-> irgendetwas' _ist nicht da_! Sie müssen Speicher mit 'malloc' reservieren – ForceBru

Antwort

1

ich für eines meiner Projekte eine simmilar Anforderung hatte, kann mit diesem kam:

Beispiel für die Verwendung:

struct simpleLinkedList *vars = sll_init(); 
sll_append(vars, someData); 
sll_append(vars, otherData); 

vars = sll_findFirstElement(vars); 
char *myData1 = vars->data; 
vars = sll_getNext(vars); 
char *myData2 = vars->data; 

sll_destroy(vars); 

Es hat ein paar zusätzliche Methoden (Sortieren, etc ...), die Sie einfach ignorieren können. Vielleicht wird das für dich nützlich sein.

+0

Überprüfen Sie auch https://github.com/ucodev/libpall. Vielleicht ist es so, als würde man in diesem Fall eine Mücke mit einer Rakete schießen, aber es wird auch eine sehr einfache Schnittstelle implementiert. Überprüfen Sie den Inhalt des Beispiels/Verzeichnisses. – pah

Verwandte Themen