Published 2021. 4. 11. 14:15
# Print the Elements of a Linked List (Linked Lists)
[문제]
[코드]
void printLinkedList(SinglyLinkedListNode* head) {
SinglyLinkedListNode* temp;
temp = head;
while(temp){
printf("%d\n", temp->data);
temp = temp->next;
}
}
[코드설명]
temp: LinkedList를 head부터 NULL까지 탐색할 포인터
temp가 NULL일 경우 while문을 종료한다.
NULL이 아닐 경우 temp가 가리키고 있는 node의 data value를 출력한다.
temp를 다음 노드의 포인터로 바꿔준다.
List의 마지막에 이르면 temp가 NULL로 바뀌므로 다음 반복에서 while문이 종료된다.
[채점 결과]
# Insert a Node at the Tail of a Linked List (Linked Lists)
[문제]
[코드]
SinglyLinkedListNode* insertNodeAtTail(SinglyLinkedListNode* head, int data) {
SinglyLinkedListNode* node = (SinglyLinkedListNode*)malloc(sizeof(SinglyLinkedListNode));
SinglyLinkedListNode* temp;
node->data = data;
node->next = NULL;
temp = head;
if(!temp) {
head = node;
return head;
}
while(temp->next){
temp = temp->next;
}
temp->next = node;
return head;
}
[코드설명]
node: 새로 추가할 노드의 메모리 주소를 담은 포인터
temp: LinkedList의 head부터 마지막까지 참조하기 위해 필요한 포인터
node에 data와 NULL 채운다.
List를 탐색하기 위해 temp에 head포인터를 전달한다.
temp가 NULL이면 empty list이기 때문에 head에 node의 값을 전달해주고, head를 return한다.
empty list가 아니면 temp가 미자막 노드를 가리키게 한다.
temp->next에 node를 대입해서 노드를 연결시켜주고, head를 return한다.
[채점 결과]
'알고리즘' 카테고리의 다른 글
[HankerRank] Reverse a linked list / Tree: Preorder Traversal (0) | 2021.05.14 |
---|---|
[HackerRank] Insert a node at the head of a linked list / Missing Numbers (0) | 2021.05.09 |
[HackerRank] 2D Array - DS / Intro to Tutorial Challenges (0) | 2021.04.01 |
[HackerRank] Arrays - DS / Equal Stacks (0) | 2021.03.24 |
[BOJ] 13235/2908 (0) | 2021.02.22 |