【发布时间】:2012-04-26 11:35:28
【问题描述】:
所以我已经有了这个代码:http://pastebin.com/3wuFNWGA
我在 .h 文件中有这些 typedef:http://pastebin.com/JTG9XHvW
我需要我的 push 函数通过为节点分配内存、将数据(新元素)存储在节点中并将节点插入堆栈顶部来将节点添加到 my_stack。代码运行,但是当我在将新值推送到堆栈后尝试打印 my_stack->top->data 中的值时,它总是打印零,而不是我应该推送到堆栈上的元素。
对于我的一生,我不知道为什么。我认为创建新节点并将值存储在数据中时不会出现问题,所以我认为当我尝试使 my_stack->top 指向最近添加的节点时出现问题?
这也是我在 Stack Overflow 上的第一篇文章。我希望我做的一切都是正确的。
这是将值压入堆栈的 push 函数:
void push( Stack *my_stack, int newElement ) {
Node_s *newNode;
newNode = (Node_s *) malloc(sizeof(Node_s));
if( newNode == NULL ) {
printf("Error: malloc failed in push\n");
exit(EXIT_FAILURE);
}
newNode->data = newElement;
newNode->next = my_stack->top;
my_stack->top = newNode;
}
【问题讨论】:
-
请将代码的相关部分添加到线程主体
-
我在正文中添加了推送功能。我相信这是这个问题的相关部分,但我不完全确定问题是什么,所以很难确定相关部分。
-
这似乎不是问题,但请注意,您在推送元素时不要修改
size。另外:您还可以添加示例输入+输出和预期输出吗?
标签: c list linked-list stack