トピックを検索しようとしましたが、ループ中に使用されたすべてのスレッドが見つかりました。これは、リンクリストの私はデストラクタで呼び出す関数(パラメータとして頭を渡す)であるリンクリストの再帰的デストラクタ
template <typename S>
struct node {
S data;
node<S> * next;
};
:
void destroy(node<T> * n) {
if(n->next != NULL){
destroy(n->next);
}
delete n;
}
残念ながら結果はAである私は再帰的にこれをやりたいが セグメンテーション障害。 誰かが私を助けることができますか?
編集:私は見ることができるものから、完全なコード
#include <iostream>
using namespace std;
template <typename T>
class List {
private:
template <typename S>
struct node {
S data;
node<S> * next;
};
node<T> * first;
node<T> * get_last_p() {
if(first != NULL){
return get_last(first);
}
return NULL;
}
node<T> * get_last(node<T> * n) {
if(n->next != NULL) {
return get_last(n->next);
} else {
return n;
}
return NULL;
}
void destroy(node<T> * n) {
if(n->next != NULL){
destroy(n->next);
}
delete n;
}
public:
List() {first->next = 0;}
~List() {destroy(first);}
void add(T element) {
node<T> * new_element = new node<T>;
new_element->data = element;
if(first == NULL){
first = new_element;
} else {
get_last_p()->next = new_element;
}
}
T get_last() {
return get_last_p()->data;
}
T get_first() {
return first->data;
}
};
'n'は決してnullではありませんか? – KABoissonneault
http://stackoverflow.com/help/mcve – xaxxon
問題がどこにわからない場合は、問題がどこにないかわかりません。あなたのコードを投稿してください。 – xaxxon