본문 바로가기
HackerRank

Compare two linked lists

by Doromi 2023. 10. 9.
728x90
반응형
주어진 두 개의 연결 리스트(Linked List)가 동일한 데이터 요소(Node)들로 구성되어 있는지를 비교하는 알고리즘 문제입니다. 이 문제의 목표는 두 연결 리스트가 동일한 데이터 요소를 같은 순서로 포함하는지 확인하는 것입니다.

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

문제 설명:
문제의 입력으로는 두 개의 연결 리스트 head1과 head2가 주어집니다. 이 두 연결 리스트를 비교하여 같은 데이터 요소로 구성되어 있는지 확인해야 합니다.

알고리즘 절차:

두 연결 리스트를 동시에 순회하면서 각 노드의 데이터를 비교합니다.
만약 두 노드의 데이터가 다르면, 연결 리스트가 다르다고 판단하고 false를 반환합니다.
두 연결 리스트의 모든 노드를 비교한 후에도 다른 데이터가 없다면, 연결 리스트가 동일하다고 판단하고 true를 반환합니다.

 

bool compare_lists(SinglyLinkedListNode* head1, SinglyLinkedListNode* head2) {
    SinglyLinkedListNode* current1 = head1;
    SinglyLinkedListNode* current2 = head2;
    
    // 두 연결 리스트를 동시에 순회하면서 데이터 비교
    while (current1 && current2) {
        if (current1->data != current2->data) {
            return false; // 데이터가 다르면 false 반환
        }
        
        current1 = current1->next;
        current2 = current2->next;
    }
    
    // 두 연결 리스트 중 하나라도 끝에 도달하지 않았으면 false 반환
    if (current1 || current2) {
        return false;
    }
    
    // 모든 노드의 데이터가 같으면 true 반환
    return true;
}
728x90
반응형

'HackerRank' 카테고리의 다른 글

Linked Lists:Get Node Value  (0) 2023.10.10
Merge two sorted linked lists  (1) 2023.10.09
Reverse a linked list  (0) 2023.10.08
Print in Reverse(Linked List)  (0) 2023.10.08
Delete a Node  (0) 2023.10.07