아래 함수를 구현 하자!
Node* Reverse_List(Node* head);
연결리스트가 주어질 경우 역순으로 연결리스트를 구성하는 것이다.
문제 해결을 위해서는 p, q, r 노드가 필요하다.



이런 식으로 r에 q를 넣고 q에 p를 넣고 p = p.link, q.link =r 을 반복하면 역순 리스트가 만들어진다.
Node* Reverse_List(Node* head) {
Node* p = head; /*p 노드에 head를 넣음 */
Node* q = NULL;
Node* r = NULL;
while (p != NULL) { /*q를 역순 연결리스트로 만든다. */
r = q;
q = p;
p = p->link;
q->link = r;
}
return q;
}

처음에는 역순을 만들 때 모든 링크를 반대로 돌려야 하나라고 생각했고 또 예전에 temp라는 변수를 만들고 a와 b를 변환하는 문제가 생각나서 변수 두개로 역순을 만드려니 잘 되지 않았다 하지만 저렇게 변수 3개로 만들면 되는 것을 알고 난 후에는 쉽게 구현 할 수 있었다. 원리만 이해하면 어려운 과제는 아니였던거 같다.