포인터와 링크 된 목록 주위에 머리를 감싸는 데 어려움을 겪고 있습니다. 이런 유형의 질문은 여기에서 자주 묻는 것을 볼 수 있습니다. 그래서이 포럼의 진흙에 추가해 줘서 사과드립니다. 그러나, 나는이 과제를 2 일 동안 마무리하려고 노력해 왔지만 나는 그것을 얻지 못한 것처럼 보입니다.C++ 복사 링크 된 목록의 값의 생성자, 주소가 아닙니다.
이것이 숙제 임은 분명합니다.
나는 연결된 목록을 복사하고 이전 목록을 삭제하고 값을 유지해야하는 프로젝트가 있습니다. 나는 복사 생성자에게 거의 모든 노드를 참조로 전달해야한다.
내가 뒷조사를 수행 한 후 이미 여기에 몇 가지 정말 좋은 반응을 본 적이, 그리고 가장 가까운 내가 달성하기 위해 필요에 대한 해결책을 본적이 하나입니다
Coding a function to copy a linked-list in C++
내가하려고 할 때 오류 : 광산 유사한 코드를 구현하기 위해서는 컴파일에 나에게 오류를 제공 단항의 유효하지 않은 유형의 인수를 '*'('지능'이) 연결리스트 여기
을 것 코드 :
IntList::IntList(const IntList &a){
if(a.head != NULL)
{
ListNode *thisNode = a.head;
ListNode *nextN = NULL;
while(thisNode != NULL)
{
ListNode *newNode = new ListNode;
newNode->value = (*thisNode->value); //error occurs here
if(nextN == NULL)
{
nextN = newNode;
}
else
{
nextN->next = newNode;
nextN = nextN->next;
}
thisNode = thisNode->next;
size++;
}
}
else
{
cout << "The list empty." << endl;
return;
}
}
10 번 줄에서 캡슐화를 제거하면 생성자에서 오류가 발생하지 않습니다. 그러나 일단 소멸자를 호출하면 이전 목록은 방금 비운 메모리를 계속 참조합니다.
정말이 과제에 도움을 주셔서 감사합니다. 포인터를 역 참조하지 않는다고 생각하지만 코드를 해독하여 작동하도록 할 수는 없습니다 ...
StackOverflow에 오신 것을 환영합니다. 제발 [투어], 좋은 질문을 배우십시오 stackoverflow.com/help/how-to-ask, [mcve]를 확인하십시오. 디버깅 코드에 대한 도움을 얻으려면 https://ericlippert.com/2014/03/05/how-to-debug-small-programs/ – Yunnosch
을 참조하십시오. newNode-> value = thisNode-> value – Kapil