본문 바로가기

항해99 chap02

역순 연결 리스트

#역순 연결 리스트
연결리스트를 뒤집어라


class ListNode:
    def __init__(self, val=0, next=None):
       self.val = val
       self.next = next
    def print_all(self):
        while self:
            print(self.val, end=' ')
            self= self.next
        print()


def reverseList(head): #반복
    node, prev = head, None

    while node:
        next, node.next = node.next, prev  # 현재 노드에서 가르키는 노드를 next에, 현재 노드가 가르키고 있던것을 prev로
        prev, node = node, next            # prev를 현재 노드로 최신화, node도 현재 노드에서 가르키고 있는 노드로 최신화
    return prev

풀이

node.next를 이전 prev 리스트로 계속 연결하면서 끝날때 까지 반복.


배운것

a=1 
b=2

a,b = b,a # 가능
#원래는 
temp = a
a=b
b=temp

답지풀이

def reverseList(head): #재귀
    def reverse(node,prev:ListNode= None):
        if not node:
            return prev
        next, node.next = node.next,prev
        return reverse(next,node)
    return reverse(head)

다음 노드 next와 현재 노드를 파라미터로 지정한 함수를 계속해서 재귀 호출한다.

'항해99 chap02' 카테고리의 다른 글

일일온도 - 스택  (0) 2022.01.21
홀짝 연결 리스트  (0) 2022.01.18
두 정렬 리스트의 병합  (0) 2022.01.18
배열 파티션  (0) 2022.01.18
그룹 애너그램  (0) 2022.01.18