농담곰담곰이의곰담농

[자료구조] 연결리스트(1) : 리스트를 역순으로 만드는 연산

by 브이담곰

✅ C언어로 쉽게 풀어 쓴 자료구조 : p.206-208 LAB

연결리스트를 역순으로 만드는 프로그램을 작성하여 보자. 이 함수에서는 세 개의 포인터 p,q,r 포인터를 사용하여 연결 리스트를 순회하면서 링크의 방향을 역순으로 바꾸면 된다. 새로운 연결 리스트를 만들지 않고 이와 같이 3개의 포인터를 사용하여 현재의 연결 리스트 안에서 문제를 해결하는 기법은 상당히 흥미롭다. 다만 주의할 점은 링크의 방향을 역순으로 바꾸기 전에 미리 뒤의 노드를 알아 놓아야 한다. p는 역순으로 만들 리스트이고 q는 현재 역순으로 만들 노드를 가리키며, r은 이미 역순으로 변경된 리스트를 가리킨다. r은 q, q는 p를 차례로 따라간다.


30,20,10순으로 연결되어져 있다.

ListNode* reverse(ListNode *head)
{
  ListNode *p,*q,*r;
  p = head; 
  q= NULL;
  while(p!= NULL)
  {
    r = q;
    q = p;
    p = p -> link;
    q->link = r;
  }
  return q;
}

(1)reverse() 함수에서 포인터 p,q,r을 만든다.
(2) 먼저, p는 head를 가리키고, q는 NULL을 갖는다.

✔ p = 역순으로 만들 리스트

✔ q = 현재 역순으로 만들 노드

✔ r = 이미 역순으로 변경된 리스트


<결과>

'Computer Science > 자료구조,알고리즘' 카테고리의 다른 글

[인프런] DFS & BFS  (0) 2024.03.06
[인프런] 비트 마스킹  (0) 2024.02.19
[인프런] BIG-O 표기법  (0) 2023.02.02

블로그의 정보

농담곰담곰이의곰담농

브이담곰

활동하기