본문 바로가기

c언어 스터디/HackerRank

[HackerRank] Delete a Node

Delete a Node | HackerRank

 

Delete a Node | HackerRank

Delete a node from the linked list and return the head.

www.hackerrank.com

 

<문제>

input: 첫번째 줄은 linked list 내에 있는 원소들의 총 개수를 입력받고,
두번째 줄부터 각 줄은 리스트에 있는 데이터를 순서대로 입력한다.
마지막 줄은 내가 삭제하고 싶은 노드의 position을 입력한다.

output: 삭제하고 난 뒤의 리스트를 출력한다.

 

<코드>

SinglyLinkedListNode* deleteNode(SinglyLinkedListNode* llist, int position) {
    SinglyLinkedListNode* node;
    if (position == 0){
        llist = llist->next;
    }
    else{
         node = llist;
         for(int i = 0; i < position - 1; i++){
             node = node->next;
         }
         node->next = node->next->next;
    }
    return llist;
}

 

<풀이>

if문을 이용해 문제를 풀어보았다.
만약 position=0이면 다음 노드로 이동하고, 아니라면
node=list로 값을 변경하고 position만큼 노드를 이동한다.
만약 node가 position 값에 도달하면 node->next->next를 이용해 노드를 덮어씌우고 삭제하였다.
마지막으로 llist노드를 리턴하여 문제를 풀 수 있었다.

 

<실행결과>

'c언어 스터디 > HackerRank' 카테고리의 다른 글

[HackerRank] Strong Password  (0) 2021.07.22
[HackerRank] Reverse a linked list  (0) 2021.07.22
[HackerRank] Migratory Birds  (0) 2021.07.17
[HackerRank] Minimum Distances  (0) 2021.07.10
[HackerRank] Bill Division  (0) 2021.07.10