본문 바로가기
코딩/파이썬

연결리스트 순회 이해하기

by goemgoem-i 2024. 10. 1.
반응형
class LinkedList:
    def __init__(self):
        self.head = None  # 첫 번째 노드를 가리키는 head

 

  • class LinkedList:: LinkedList라는 클래스를 정의합니다.
  • def __init__(self):: 생성자 메서드로, 객체가 생성될 때 자동으로 호출됩니다.
  • self.head = None: 연결 리스트의 첫 번째 노드를 나타내는 head 변수를 None으로 초기화합니다. 리스트가 처음 생성될 때는 노드가 없기 때문에 head는 None을 가리킵니다.

 

def append(self, data):
    new_node = Node(data)
    if self.head is None:  # 리스트가 비어있을 때
        self.head = new_node
        return
    last = self.head
    while last.next:  # 마지막 노드를 찾음
        last = last.next
    last.next = new_node

 

 

  • def append(self, data):: 리스트에 새 노드를 추가하는 메서드입니다. data는 추가될 노드의 데이터입니다.
  • new_node = Node(data): Node라는 새로운 노드를 생성하고, 그 노드에 데이터를 저장합니다.
  • if self.head is None:: 리스트가 비어 있는지(첫 번째 노드가 없는지) 확인하는 조건문입니다.
  • self.head = new_node: 리스트가 비어 있을 경우, 새로 생성한 노드를 리스트의 첫 번째 노드로 설정합니다.
  • return: 함수 종료. 리스트가 비어 있을 경우, 새 노드를 추가하고 함수를 끝냅니다.
  • last = self.head: 리스트의 마지막 노드를 찾기 위해 첫 번째 노드부터 시작합니다.
  • while last.next:: 마지막 노드를 찾기 위해 반복문을 사용합니다. last.next가 None이 아닐 때까지 계속 반복합니다.
  • last = last.next: 현재 노드가 마지막 노드가 아니면 다음 노드로 이동합니다.
  • last.next = new_node: 마지막 노드가 발견되면 그 노드의 next 포인터를 새 노드를 가리키도록 설정합니다.
def traverse(self):
    current_node = self.head
    while current_node:  # 현재 노드가 None이 아닐 때까지 순회
        print(current_node.data)  # 현재 노드의 데이터를 출력
        current_node = current_node.next  # 다음 노드로 이동

 

 

  • def traverse(self):: 리스트를 순회하면서 각 노드의 데이터를 출력하는 메서드입니다.
  • current_node = self.head: 순회를 시작할 때, 현재 노드를 첫 번째 노드로 설정합니다.
  • while current_node:: 현재 노드가 None이 아닐 때까지 반복문을 실행합니다. 즉, 리스트 끝까지 순회합니다.
  • print(current_node.data): 현재 노드의 데이터를 출력합니다.
  • current_node = current_node.next: 다음 노드로 이동합니다. 현재 노드가 마지막 노드일 경우 None으로 설정되면서 루프가 종료됩니다.
linked_list = LinkedList()
linked_list.append(1)
linked_list.append(2)
linked_list.append(3)

# 연결 리스트 순회
linked_list.traverse()

 

 

  • linked_list = LinkedList(): LinkedList 클래스로 새로운 객체 linked_list를 생성합니다.
  • linked_list.append(1): 리스트에 첫 번째 데이터로 1을 추가합니다.
  • linked_list.append(2): 리스트에 두 번째 데이터로 2를 추가합니다.
  • linked_list.append(3): 리스트에 세 번째 데이터로 3을 추가합니다.
  • linked_list.traverse(): 리스트를 순회하면서 노드의 데이터를 출력합니다.
1
2
3

 

반응형