반응형
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
반응형
'코딩 > 파이썬' 카테고리의 다른 글
파이썬 리스트를 문자열로 변경하기 (0) | 2024.08.14 |
---|---|
파이썬 for문과 for i in range문 반복문 / 묶음과 언패킹 예제 (1) | 2024.08.08 |
파이썬 대소문자 변환 방법 upper, lower, islower, isupper (2) | 2024.07.10 |
파이썬python print함수 기초부터 고급 사용법 | sep, end, file, flush, f-string, format 메서드, % 포맷팅 (0) | 2024.07.08 |