我正在学习cpp并需要一些帮助。
我的代码无效,它停在add->value = value
。
typedef struct node node;
struct node{
int value;
struct node *next;
};
node *top;
int insert(int value){
struct node *add;
cout<< "here it stops";
add->value = value;
add->next = NULL;
if(top == NULL ){
top == add;
}else{
add->next = top;
top = add;
}
}
答案 0 :(得分:7)
执行此操作时:
struct node *add;
您正在定义指向node
的指针(您可以在此处省略struct
)。但指针不指向任何有效的node
对象。您必须先指向node
才能执行此操作:
add->value = value;
答案 1 :(得分:2)
在执行add-&gt; value = value之前,需要为struct node * add分配空间(类似于add = new node())。
答案 2 :(得分:2)
您忘记分配指针添加指向的内存。
此外,虽然函数返回类型为int,但函数不会返回任何内容。
该功能可以采用以下方式
void insert( int value )
{
node *add = new node;
add->value = value;
add->next = top;
top = add;
}
或者如果您的编译器支持列表初始化,那么
void insert( int value )
{
node *add = new node { value, top };
top = add;
}
或者在一行中:)
inline void insert( int value ) { top = new node { value, top }; }