c - 将元素指针压入堆栈

标签 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);

}

最佳答案

堆栈结构的 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

关于c - 将元素指针压入堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33293312/

相关文章:

c - C 位运算的行为

volatile 变量的更改仅在单步执行代码或关闭优化时发生

c - C语言从String中读取数据

pointers - F# 是否有地址 & 和指针取消引用 * 函数?

c++ - 如何在字符串的字符数组中使用++ 运算符访问下一个字符串?

通过指针更改多个函数内的数组

C- 字符串和循环

c - 整数文字是否被视为无符号?

c - 这个示例代码中的指针真的无效吗?

c - 如何制作一个返回函数的函数?