【发布时间】:2012-10-19 09:03:27
【问题描述】:
这是我的代码:
#include <stdio.h>
typedef struct node_struct {
int data;
struct node_struct *next;
} node;
void push(node *top, int data) {
node *new_node = (node*) malloc(sizeof(node));
new_node->data = data;
new_node->next = top;
top = new_node;
}
int main() {
node *top = (node*) malloc(sizeof(node));
top->data = 1;
printf("Set data of top node to: %d\n", top->data);
push(top, 2);
printf("Pushed 2 to top, top->next->data = %d\n", top->next->data);
}
程序在倒数第三行 (push(top, 2);) 出现段错误,我认为就行了top = new_node;
我只是在学习 C(现在是指针)。
我做错了什么?
【问题讨论】:
-
附带说明,您没有初始化
next节点的next元素(在分配它之后)。将其设置为NULL以知道它是列表的最后一个元素(因为您的推送功能将元素推送到列表顶部)
标签: c segmentation-fault