가능하면 목록을 다른 목록 안에 데이터로 저장하는 방법을 알았지 만 그 방법을 확신하지 못했습니다.
템플릿으로 가능합니다. 만약 1,7,3리스트가 5,1,7,3이되도록 허용한다면
OP는 이미 쓰여져 있기 때문에 데이터 구조를 고수하고 연결된리스트 로직을 무시할 것입니다.
template<class TYPE>
class LinkedList
{
private:
struct Node
{
TYPE data;
Node * next;
Node * prev;
};
Node * head;
public:
LinkedList():head(nullptr)
{
}
~LinkedList()
{
while (head != nullptr)
{
Node *temp = head;
head = head->next;
delete temp;
}
}
// methods go here
};
이것은 최소한입니다. 목록을 처리하려면 삽입, 제거 및 반복기 또는 다른 탐색 방법이 필요합니다. To be Rule of Three compliant이면 복사 생성자와 대입 연산자 (operator=
)도 필요합니다. Node
을 사용자에게 노출시키지 않는 것이 좋습니다. 그것으로 그들은 모든 종류의 지옥을 깰 수 있습니다. 그래서 이터레이터 뒤에 Node
을 숨 깁니다. 5,1,7,3 변형 목록의
선언은 Node
에
LinkedList<LinkedList<int>> list;
list
점과 같을 것입니다. 이 Node
은 을 가리키며 Node
이 int
s이고 다음 노드와 이전 노드를 가리 킵니다. 5,6,8,10을 유지하기
및 1,7,3, 당신은 수와
struct Intermediary
{
int data;
LinkedList<int> sublist;
};
LinkedList<Intermediary> list;
std::pair
도 일하는 것이 연결리스트를 저장하는 중개가 필요합니다.
안녕하세요 이것은 이중 링크 된 목록이 아니며 이중 연결된 목록입니까? –
실제로 나무처럼 보입니다. –
귀하의 질문을 명확히 해주십시오. 귀하의 다이어그램이 귀하의 설명과 일치하지 않습니다. 1-> 7-> 3 목록은 어디에 있습니까? –