본문 바로가기
HackerRank

Reverse a linked list

by Doromi 2023. 10. 8.
728x90
반응형
주어진 연결 리스트(Linked List)를 역순으로 뒤집는 알고리즘 문제입니다. 이 문제의 목표는 주어진 연결 리스트의 순서를 뒤집어서 수정된 연결 리스트를 반환하는 것입니다.

연결 리스트는 데이터 요소(Node)로 이루어진 데이터 구조로, 각 노드는 데이터와 다음 노드를 가리키는 링크(또는 포인터)로 구성됩니다. 연결 리스트의 끝을 나타내는 노드는 다음 노드를 가리키는 링크가 없는 특별한 노드일 수 있습니다.

문제 설명:
문제의 입력으로는 연결 리스트의 시작 노드가 주어집니다. 주어진 연결 리스트를 역순으로 뒤집어야 합니다.

알고리즘 절차:

연결 리스트를 순회하면서 현재 노드와 다음 노드를 추적합니다.
현재 노드의 다음 노드를 임시 변수에 저장합니다.
현재 노드의 다음 노드를 이전 노드로 설정합니다.
현재 노드를 이전 노드로 업데이트합니다.
다음 노드를 현재 노드로 업데이트합니다.
연결 리스트의 끝까지 이동하면, 역순으로 뒤집힌 연결 리스트가 생성됩니다.
마지막에 시작 노드를 업데이트하여 역순으로 뒤집힌 연결 리스트를 반환합니다.
SinglyLinkedListNode* reverse(SinglyLinkedListNode* llist) {
    SinglyLinkedListNode* prev = nullptr;
    SinglyLinkedListNode* current = llist;
    
    while(current){
        SinglyLinkedListNode* next = current->next;
        current->next = prev;
        prev = current;
        current = next;
    }
    return prev;
}

 

728x90
반응형

'HackerRank' 카테고리의 다른 글

Merge two sorted linked lists  (1) 2023.10.09
Compare two linked lists  (0) 2023.10.09
Print in Reverse(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