我想使用链表实现一个栈。
为了实现弹出操作(pop()),我让调用者通过传递一个双指针(指向指针的指针),最终指向我的栈顶元素(链表中的第一个元素)。
我这样做的原因是因为这样调用者可以保持一个静态指向栈的指针。
我的链表元素结构体如下:
struct Element {
int value;
struct Element *next;
};
pop()的实现:
int pop (struct Element **stack) {
int popped_value = *stack->value;
*stack = *stack->next;
return popped_value;
}
我遇到的问题是尝试取消引用双指针**stack。此代码会生成以下错误:
error: request for member ‘value’ in something not a structure
error: request for member ‘next’ in something not a structure
在我的理解中,*stack->value和**stack.value都可以用来检索popped_value,但我会得到相同的错误。
stack-->next
。 - Kapichu