【发布时间】:2017-01-31 22:28:17
【问题描述】:
我的代码应该将 StackNode 项推入 Stack。但是,当堆栈已满时,我试图让函数不再推送,并返回 null,但它不会返回 null!
Stack push(Stack stk,int data)
{
struct StackNode *top = stk.top;
struct StackNode *node = malloc(sizeof(struct StackNode));
if(node == NULL)
{
printf("Stack is full\n");
return NULL;
}
node->data = data;
node->nextNode = top;
stk.top = node;
stk.count++;
return stk;
}
这是我得到的错误:
error: returning 'void *' from a function with incompatible
result type 'Stack' (aka 'struct Stack')
return NULL;
我不确定这意味着什么。我如何解决它? Stack 的 NULL 等价物是什么?
【问题讨论】:
-
错误信息中有什么不清楚的地方?
NULL是Stack类型的值吗? -
我不知道堆栈的 null 等效项是什么
-
没有等价物。
-
您的功能和方法必须重新设计。例如返回
bool,表示成功/失败。 -
@ashadeka:这由你决定。你为什么还要尝试按值传递和返回你的堆栈?这根本没有意义。您需要彻底重新设计您的传球(和返回)方法。