728x90
반응형
주어진 연결 리스트(Linked List)의 요소를 역순으로 출력하는 알고리즘 문제입니다. 이 문제의 목표는 주어진 연결 리스트의 요소를 뒤에서부터 앞으로 역순으로 출력하는 것입니다.
연결 리스트는 데이터 요소(Node)로 이루어진 데이터 구조로, 각 노드는 데이터와 다음 노드를 가리키는 링크(또는 포인터)로 구성됩니다. 연결 리스트의 끝을 나타내는 노드는 다음 노드를 가리키는 링크가 없는 특별한 노드일 수 있습니다.
문제 설명:
문제의 입력으로는 연결 리스트의 시작 노드가 주어집니다. 이 연결 리스트를 뒤에서부터 앞으로 역순으로 출력해야 합니다.
알고리즘 절차:
재귀 함수 또는 스택(stack)을 사용하여 연결 리스트를 역순으로 출력합니다.
연결 리스트의 맨 끝까지 이동한 후, 마지막 노드의 데이터를 출력합니다.
이전 노드로 이동하고, 이전 노드의 데이터를 출력합니다.
이전 노드에서 이전 노드로 계속 이동하고, 데이터를 출력합니다.
이렇게 하면 연결 리스트를 역순으로 출력할 수 있습니다.
스택을 사용한 예시:
void reversePrint(SinglyLinkedListNode* llist) {
stack<int> s;
SinglyLinkedListNode* current = llist;
while(current){
s.push(current->data);
current= current->next;
}
while(!s.empty()){
cout<<s.top()<<endl;
s.pop();
}
}
재귀 함수를 사용한 예시:
void printReverse(SinglyLinkedListNode* head) {
if (head == nullptr) {
return; // 기저 조건: 노드가 끝에 도달하면 재귀 종료
}
// 다음 노드로 이동하고 재귀적으로 호출
printReverse(head->next);
// 현재 노드의 데이터 출력
cout << head->data << endl;
}
728x90
반응형
'HackerRank' 카테고리의 다른 글
Compare two linked lists (0) | 2023.10.09 |
---|---|
Reverse a linked list (0) | 2023.10.08 |
Delete a Node (0) | 2023.10.07 |
Insert a node at a specific position in a linked list (0) | 2023.10.07 |
Insert a node at the head of a linked list (0) | 2023.10.07 |