我已经写了一个通用的链表验证码:使用C++和通用模板提供分段错误错误的链接列表。
#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++的新手,所以如果有人能解释我做错了什么,我会非常感激。
谢谢,但这并不能解决问题 – Robot0110
任何自我尊重编译器会由于这种常见的编程错误而发出诊断消息,而且编译器很可能会这样做,但是由于它确实生成了编译的程序,因此您会忽略它。那么,你刚刚学到了一个非常宝贵的教训:即使它成功地编译了一个编译好的程序,也不要忽略来自编译器的警告和其他诊断信息。编译器向你咆哮的原因有很多,这不是因为你的编译器喜欢生成长而混乱的消息。 –
@ Robot0110 *我仍然是C++的新手* - 但是您正在尝试编写一个程序,只有中级到高级程序员才能正确编写**,甚至一位中级程序员可能会错过一些重要细节。 – PaulMcKenzie