#역순 연결 리스트
연결리스트를 뒤집어라
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 |