我试图将我的元素的指针推入堆栈,这样它就会返回一个指针而不是元素。
根据我的有限理解,它会返回元素而不是指针。
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);
}
答案 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