我正在尝试使用单链表在 C 中实现堆栈,只要堆栈非空,一切都可以正常工作。一旦为空,我的 pop 方法永远不会检测到它是空的,而是给出一些随机值。有什么方法可以让我知道堆栈是空的吗?这是我正在使用的 pop 方法以及示例主程序输出。
int main(int argc, char const *argv[])
{
Node* top;
push(&top,5);
printf("Popped Element: %d\n",pop(&top));
printf("Popped Element: %d\n",pop(&top));
return 0;
}
int pop(Node** top)
{
if(*top == NULL)
{
printf("Error: Stack is empty!\n");
return;
}
int temp = (*top)->iData;
*top = (*top)->next;
return temp;
}
输出:
Popped Element: 5
Popped Element: 1707388
编辑: 这是推送代码
void push(Node** top ,int num)
{
Node* temp = (Node* )malloc(sizeof(Node));
temp->iData = num;
temp->next = *top;
*top = temp;
}
最佳答案
在创建新节点并将其添加到列表时将其初始化为 NULL。并使用
return -1;
而不是
return;
编辑:
在 main 中初始化 *top =NULL
int main(int argc, char const *argv[])
{
Node* top=NULL;
push(&top,5);
printf("Popped Element: %d\n",pop(&top));
printf("Popped Element: %d\n",pop(&top));
return 0;
}
关于c - 如果我使用这种方法弹出元素,我怎么知道堆栈是空的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12528267/