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 |