我已经为通用链表编写了这段代码:
#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 ++的新手,所以如果有人能解释我做错了什么,我真的很感激。
答案 0 :(得分:1)
但是每当我尝试执行ll_print时,我都会遇到分段错误。
你正在这里使用未初始化的指针:
Node<T>* new_node; // unintialized pointer.
new_node->data = data;
你最想要的是:
Node<T>* new_node = new Node<T>;
new_node = ...