2016-04-27 3 views
1

Welcher ist die beste Methode zum Implementieren eines Stapels und einer einfach verknüpften Liste? Sollte ich zwei Strukturen haben, in denen die erste die Struktur eines Knotens (Wert (e), Zeiger) und die andere die wichtigen Knoten (oben oder Kopf, Schwanz und die Größe, falls benötigt) enthält oder sollte ich nur den Knoten verwenden Struktur? HierDie beste Methode zum Implementieren eines Stapels und einer einfach verknüpften Liste

ist, was ich meine:

Fall 1:

typedef struct node { 
    int value; 
    struct node *next; 
} Node; 

Fall 2 (Stack):

typedef struct node { 
int value; 
struct node *next; 
} Node; 

typedef struct stack { 
    Node *top; 
    /* int size; */ 
} Stack; 

Fall 2 (SLL):

typedef struct node {        
    int value; 
    struct node *next; 
} Node; 

typedef struct list {        
    Node *head, *tail; 
    /* int len; */ 
} List; 
+1

Ist das Hausaufgaben? – SevenBits

+0

Nein, es ist keine Hausaufgabe. Ich bin nur ein Anfänger und ich möchte wissen, welches der beste Weg ist, um zu programmieren. – vamoirid

Antwort

2

Ihr Koffer 2 hat den Vorteil einer besseren Typensicherheit. Der C-Compiler erkennt, wenn Sie anstelle einer Liste einen Knoten oder einen Stapel verwenden, und so weiter.

Umgekehrt, wenn es Funktionen gibt, die genauso gut mit einem Stack und einer Liste umgehen können, benötigen Sie spezialisierte Versionen von ihnen. Natürlich können sie sich eine gemeinsame knotenbasierte Implementierung auf niedriger Ebene teilen. Sie müssen etwas mehr administrativen Aufwand für die Typ-Sicherheit haben, aber es lohnt sich in der Regel.

Verwandte Themen