본문 바로가기
HackerRank

Insert a node at the head of a linked list

by Doromi 2023. 10. 7.
728x90
반응형
주어진 연결 리스트(Linked List)의 시작 부분에 새로운 노드를 추가하는 알고리즘 문제입니다. 이 문제의 목표는 주어진 연결 리스트의 시작 부분에 새로운 노드를 추가하여 연결 리스트를 확장하는 것입니다.

연결 리스트는 데이터 요소(Node)로 이루어진 데이터 구조로, 각 노드는 데이터와 다음 노드를 가리키는 링크(또는 포인터)로 구성됩니다. 연결 리스트의 시작 노드는 전체 연결 리스트의 시작을 가리키며, 새로운 노드를 시작 노드로 추가하면 이 새로운 노드가 연결 리스트의 새로운 시작이 됩니다.

문제 설명:
문제의 입력으로는 연결 리스트와 추가할 데이터가 주어집니다. 연결 리스트의 시작 부분에 추가할 데이터를 가지는 새로운 노드를 만들고, 이를 연결 리스트의 시작 부분에 추가해야 합니다.

알고리즘 절차:

추가할 데이터를 가지는 새로운 노드를 생성합니다.
새로운 노드의 다음 노드를 현재의 시작 노드로 설정합니다.
시작 노드를 새로운 노드로 업데이트합니다.
이렇게 하면 새로운 노드가 시작 노드가 되고, 이전의 연결 리스트는 새로운 노드의 다음 노드로 연결됩니다. 결과적으로 연결 리스트는 확장되고, 새로운 노드가 연결 리스트의 새로운 시작이 됩니다.

주의: 이 알고리즘은 새로운 노드를 시작 노드로 추가하므로 시작 부분에 노드를 추가하는 방법을 구현합니다. 이를 통해 연결 리스트의 처음에 데이터를 추가할 수 있습니다.

 

SinglyLinkedListNode* insertNodeAtHead(SinglyLinkedListNode* llist, int data) {
    SinglyLinkedListNode* newNode = new SinglyLinkedListNode(data);
    newNode->next = llist;
    
    return newNode;
}
728x90
반응형

'HackerRank' 카테고리의 다른 글

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 Tail of a Linked List  (0) 2023.10.07
Print the Elements of a Linked List  (0) 2023.10.07
Binary Search Tree : Insertion  (1) 2023.10.06