2016-07-12 10 views
-2
struct node 
{ 
    int val; 
    struct node *left, *right; 
}; 

// Stack type 

struct Stack 
{ 
    int size; 
    int top; 
    struct node* *array; 
}; 

struct Stack* createStack(int size) 
{ 
    struct Stack* stack = 
     (struct Stack*) malloc(sizeof(struct Stack)); 
    stack->size = size; 
    stack->top = -1; 
    stack->array = 
     (struct node**) malloc(stack->size * sizeof(struct node*)); 
    return stack; 
} 

Was macht diese Aussage?Finden eines Paares mit gegebener Summe in BST

stack->array = 
    (struct node**) malloc(stack->size * sizeof(struct node*)); 

Was wird die Speicherdarstellung davon sein?

+0

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

+0

http://linux.die.net/man/3/malloc lassen Sie uns wissen, was darin unklar ist. –

Antwort

0
stack->array = 
(struct node**) malloc(stack->size * sizeof(struct node*)); 

struct Knoten ** einen Zeiger auf einen Zeiger zurückkehrt (auf den Stapel)

Stack-> Größe ist die Anzahl der Elemente des Stapels sizeof (struct node *) ist, die Größe eines Zeiger auf einen Knoten.

So erstellt es ein Array von Zeigern, wobei jeder Zeiger auf ein Element innerhalb des Stapels zeigt.

+0

Also ich denke, das wird wie sein: - –

+0

Ich verstehe Ihre Bemerkung nicht –

0

Die obige Anweisung weist Speicherplatz für ein Array von struct node * zu, d.h. Zeiger auf struct node.

Jeder Zeiger in diesem Array kann dann auf eine Instanz von struct node zeigen.