在c++中使用链表实现堆栈



我已经写了一个代码,将一个节点推入堆栈,我已经实现了它使用一个单一的链接列表。但每当我运行它,它显示运行时错误。请帮帮我。

#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 

相关内容

  • 没有找到相关文章

最新更新