链接列表与C ++和通用模板给出分段错误错误。

时间:2017-10-22 04:08:33

标签: c++ class templates linked-list

我已经为通用链表编写了这段代码:

#include <iostream>
#include <stdio.h>


template <class T> 
struct Node{ 
    T data; 
    Node<T> *next; 
};


template <class T> 
class LinkedList{ 


    Node<T>* head; 
    int size; 

    public: 

        LinkedList<T>() {

            size = 0;
            head = NULL;
        }


        void ll_push(T data){ 
            Node<T>* new_node; 
            new_node->data = data; 
            new_node->next = head; 
            head = new_node; 
            size ++; 
        }

        int ll_size(){ 
            return size; 
        }

        void ll_print_int(){
            Node<T> *start = head; 
            while (start != NULL){ 
                cout<< start->data;
                start = start->next;
                cout<< ","; 
            }
        }


};



int main(){ 

    LinkedList<int> ll;

    for(int i = 0; i < 10; i++){ 
        ll.ll_push(i);
    }

    ll.ll_print_int();

    return 0;
}

但每当我尝试执行ll_print时,都会出现分段错误错误。我想我可能会在某些时候误用指针,但我不确定。我仍然是C ++的新手,所以如果有人能解释我做错了什么,我真的很感激。

1 个答案:

答案 0 :(得分:1)

  

但是每当我尝试执行ll_print时,我都会遇到分段错误。

你正在这里使用未初始化的指针:

Node<T>* new_node;       // unintialized pointer.
new_node->data = data;

你最想要的是:

Node<T>* new_node = new Node<T>;
new_node = ...