我编写了一个将节点推入堆栈的代码,我已经使用单链接列表实现了它。但每当我运行它时,它会显示运行时错误。请帮帮我。
#include <iostream>
#include <string>
using namespace std;
struct node{
int key;
node *next;
}*head=NULL;
void push(node *n){
n->next=head->next;
head->key=n->key;
head->next=n;
cout<<head->key<<" ";
}
int main(){
node *x;
cin>>x->key;
push(x);
return 0;
}
我正在使用C ++ 4.9.2(GCC-4.9.2) 请帮我找出我出错的地方
答案 0 :(得分:0)
您只为指向node
的指针重复分配内存,而不是node
本身:
1。你的声明
struct node{
int key;
node *next;
}*head=NULL;
仅为指针head
分配内存(并使用值NULL
初始化它)。
使用此代替它:
struct node{
int key;
node *next;
}some_node, *head=&some_node; // Allocates memory for node and for pointer, too
2。同样,您的声明:
node *x;
仅为指针x
分配内存。
请改用:
node other_node; // Allocate memory for the struct node
node *x = &other_node; // Allocate memory for the pointer and initialize it