使用c ++中的链接列表实现堆栈

时间:2016-11-18 16:15:04

标签: c++ pointers linked-list stack

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

#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) 请帮我找出我出错的地方

1 个答案:

答案 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