我已经写了一个代码,将一个节点推入堆栈,我已经实现了它使用一个单一的链接列表。但每当我运行它,它显示运行时错误。请帮帮我。
#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)请帮助我找出我错在哪里
您只为指向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