2017-04-19 2 views
-2

ich herauszufinden versuche, wie eine Funktion zu erstellen, die auf der Oberseite eines Stapels einen neuen Knoten hinzufügt, während gegeben:Push-Funktion (Hinzufügen von neuen Knoten nach oben Liste) C++

// a structure for a node 
struct node { 
int key; 
node * next; 
}; 

// a structure for a stack 
struct stack { 
node * top; 
node * bottom; 
}; 

// and the function declaration 
void push(stack & s, int key) 

Es soll um für einen leeren Stapel und einen Stapel von mehr als 1 Knoten zu arbeiten.

Ich habe es wirklich schwer zu verstehen, wie die Zeiger auf Strukturen funktionieren und wie man sie hinzufügt und entfernt, damit jede Erklärung geschätzt wird. Vielen Dank!

+1

Das sieht wie ein Stapel aus, der mit einer einfach verknüpften Liste implementiert wird. Eine der besten Möglichkeiten, eine verknüpfte Liste zu verstehen, besteht darin, den Saugnapf auf ein Stück Papier zu zeichnen und zu beobachten, wie die Knoten miteinander verbunden werden müssen, um eine aussagekräftige Liste zu erstellen. Sobald Sie sich vorstellen können, was passieren muss, wird der Rest viel einfacher. – user4581301

+0

Verwenden Sie den Listencontainer von C++ http://www.cplusplus.com/reference/list/list/ – RomMer

Antwort

0

s ist ein Zeiger auf Stapel, und haben zwei Werte, dh 'unten' und 'oben', oben ist die Eigenschaft des Stapels, aber unten sollte Start Zeiger des Stapels sein (die in Form der verknüpften Liste ist)

void push(stack *s, int key) 
{ 
    struct node newNode; 
    newNode.key = key; 
    newNode.next = NULL; 

    if(s->top == NULL) 
    { 
     s->top =&newNode; 
     s->bottom =&newNode; 
    } 
    else{ 
    //Assigning new node to top 
    s->top->next = &newNode; 

    //pointing top to new node 
    s->top = &newNode; 
    } 
} 

überprüfen Sie es aus.

Verwandte Themen