0) 제목
Hackerrank 의 Linked Lists 부분의 Reverse a linked list 문제입니다.
C언어를 이용하여 풀었습니다.
1) 문제설명
Reverse 함수의 파라미터로 들어오는 Node 구조체의 포인터 (head pointer of Linked lists)를 받아서 역순으로 연결하여 return 하는 문제입니다.
input) 2 -> 4 -> 7 -> NULL
output) 7-> 4 -> 2-> NULL
2) 풀이과정
오리지널노드의 head->next를 가리킬 노드 포인터(curNode) 하나,
역순 노드의 헤드가 될 노트 포인터(tail) 하나를 만들어
하나씩 이동하면서 역순으로 셋팅하도록 구현했습니다.
3) 코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | /* typedef struct _node { int data; struct _node *next; } Node; */ Node* Reverse(Node *head) { Node * tail= NULL; // 새로 역순으로 만들어질 노드의 헤드 포인터. Node * curNode; // 남아있는 오리지널 노드의 주소를 가리킬 포인터. while(head != NULL){ curNode = head->next; head->next = tail; tail = head; head = curNode; } return tail; } | cs |
주석 내부에 있는 부분은 C언어 문법에 맞게 고쳤습니다.
(Hackerrank 에서는 C++ 문법으로 지원)
경로 : Dashboard>Data Structures>Linked Lists>Reverse a linked list
출처 : [HackerRank] https://www.hackerrank.com/challenges/reverse-a-linked-list/problem
'<알고리즘 문제풀이&연습> > [C++] 백준, 프로그래머스 등등' 카테고리의 다른 글
[C++ 동적할당] Variable Sized Arrays (배열) (0) | 2017.07.08 |
---|---|
[C 자료구조] Stack - Balanced Brackets (0) | 2017.07.07 |
[C 자료구조] Linked Lists -Reverse a doubly linked list (1) | 2017.07.06 |
[C 자료구조] Heap - QHEAP1 (0) | 2017.07.05 |
[C 자료구조] Tree - Level Order Traversal (0) | 2017.07.05 |
[C 자료구조] Linked Lists - Inserting a Node Into a Sorted Doubly Linked List (0) | 2017.06.29 |
[C 자료구조] Queue - Queue using Two Stacks (0) | 2017.06.27 |
[C 자료구조] Stack - Maximum Element (0) | 2017.06.26 |