将元素指针推入堆栈

时间:2015-10-23 01:11:01

标签: c pointers

我试图将我的元素的指针推入堆栈,这样它就会返回一个指针而不是元素。

根据我的有限理解,它会返回元素而不是指针。

typedef struct Stack
{
    int capacity;
    int size;
    TLDNode* elements;
}Stack;


void push(Stack *S,TLDNode *element)
{

    S->elements = element;
    S->size = S->size + 1;
    return;
}



 Stack *S;
    S = (Stack *)malloc(sizeof(Stack));
    S->elements = ( TLDNode *)malloc(sizeof( TLDNode)*100);
    S->size = 0;
    S->capacity = 100;

    PUSHTOSTACK(tld->head, S);

void PUSHTOSTACK(TLDNode * root,Stack * S){

    PUSHTOSTACK(S,root);

}

1 个答案:

答案 0 :(得分:1)

您的堆栈结构的elements成员具有类型TLDNode*,它等同于TLDNode的数组。你想要的是一个指向 TLDNode的指针数组,所以你需要另一个*

typedef struct Stack
{
    int capacity;
    int size;
    TLDNode** elements;
}Stack;

从技术上讲,这只是一个指向TLDNode 指针的指针,但这基本上等同于一个指针数组,如下面的代码片段所示:

TLDNode *node_array[10]; // Array of 10 pointers to TLDNodes
TLDNode **elements = node_array; // node_array is assignable to elements