1. 연결리스트 구현
: 구현 방법 관련한 자세한 설명은 아래 글에
2023.11.29 - [C++/자료구조] - [C++]Doubly linked list with sentinel nodes
[C++]Doubly linked list with sentinel nodes
1. 설명 : head와 tail이 직접 리스트의 첫번째 노드와 마지막 노드를 가리키는 것이 아닌 sentinel node로 설정하여 각각의 next/prev 노드가 첫번째 노드와 마지막 노드를 가리키게 함으로써 노드 삽입/
growingupis.tistory.com
2. 연결리스트 역순으로
- 첫 번째 노드부터 마지막 노드까지 순회
- 해당 노드의 next는 노드의 prev를
- 해당 노드의 prev는 노드의 next를
- 이때, 노드의 next/prev변경하고나면 다음 노드로 순회하지 못하기에 임시로 노드의 next저장하는 노드 포인터 생성
- 다 순회하고나면 head와 tail노드의 각각 next와 prev 업뎃
- 첫번째 노드와 마지막 노드의 prev/next를 head/tail로 업뎃
(Ⅲ,Ⅳ 과정의 추가로 코드가 조금 복잡해보일 수 있음)
void reverse() {
Node* curNode = begin();
// head 4 5 6 7 tail
// head 7 6 5 4 tail
while (curNode != end()) {
Node* temp_next = curNode->getNext();
curNode->setNext(curNode->getPrev());
curNode->setPrev(temp_next);
curNode = temp_next;
}
Node* firstNode = begin();
Node* lastNode = last();
head->setNext(lastNode);
tail->setPrev(firstNode);
begin()->setPrev(head);
last()->setNext(tail);
}
'C++ > 자료구조' 카테고리의 다른 글
[c++] Heap (1) | 2023.12.08 |
---|---|
[C++]AVL Tree (0) | 2023.12.07 |
[C++]Doubly linked list with sentinel nodes (1) | 2023.11.29 |
[c++] 스택 활용한 수식 계산 (0) | 2023.11.16 |
[C++]원형큐 (0) | 2023.11.14 |