현재 연결된 목록 구조를 연습 중이며 해당 알고리즘을 사용하여 프로그램을 작성했습니다. 이 프로그램에는 연결된 목록의 모든 요소를 제거하는 재귀 적 메서드가 있습니다. 그러나 해당 메서드에서 프로그램이 충돌합니다.재귀 메서드 C++
void exit()
{
Person* person = phead;
exterminateStartingFrom(person);
}
void exterminateStartingFrom(Person* person)
{
Person* nextperson;
nextperson = person->getNext();
if(nextperson){
exterminateStartingFrom(nextperson);
}
delete person;
}
이 방법은 사용자가 종료 할 때 실행됩니다. "phead"는 사람 목록의 첫 번째 요소를 나타냅니다. 더블 무료 또는 손상 (fasttop)
여기 Person 클래스입니다 :
class Person {
private:
std::string firstname;
std::string lastname;
int age;
Person* next;
public:
Person(std::string, std::string, int);
void printDescription();
void printFirstname();
void printLastname();
void printAge();
void setNext(Person*);
Person* getNext();
};
감사 문제는 보여 주었다.
'phead'가 NULL로 시작하면 함수가 실패하지만 그렇지 않으면 ok입니다. –
많은 것들은 (i)'Person' 객체가 초기화되는 방법 (생성자)과 (ii) 그것들이 어떻게 파괴되는지 (destructor)에 달려 있습니다. – jogojapan
'delete '를 호출 할 때 일어나는 일을보기 위해서는 Person 소멸자를 보여줘야합니다. –