데이터를 동적으로 연결하는 연결 리스트(Linked List)
연결 리스트(Linked List)
는 데이터를 일렬로 저장하는 자료구조 중 하나로, 각 요소는 다음 요소에 대한 참조(포인터)를 갖고 있습니다.
연결 리스트는 요소들이 물리적으로 연속된 위치에 있지 않으며, 동적으로 크기를 조절할 수 있다는 장점이 있습니다.
연결 리스트는 어떻게 구성되어 있나요?
연결 리스트는 노드(Node)
라는 단위로 구성됩니다.
각 노드는 데이터(data)
와 다음 노드에 대한 참조(next)
로 구성됩니다.
연결 리스트에서 첫 번째 노드를 헤드(head)
라고 하며, 마지막 노드는 다음 노드에 대한 참조가 없기 때문에 None
을 가리킵니다.
파이썬으로 연결 리스트 구현하기
연결 리스트는 각 노드가 다음 노드에 대한 참조를 통해 연결되는 형태입니다.
아래는 파이썬으로 연결 리스트를 구현한 예제입니다.
# 노드 클래스 class Node: def __init__(self, data): self.data = data self.next = None # 연결 리스트 클래스 class LinkedList: # 연결 리스트 초기화 def __init__(self): self.head = None # 노드 추가 def append(self, data): new_node = Node(data) if not self.head: self.head = new_node print(f"Head 노드로 {data}가 추가되었습니다.") return last_node = self.head while last_node.next: last_node = last_node.next last_node.next = new_node print(f"{data}가 리스트에 추가되었습니다.") # 연결 리스트 출력 def display(self): current_node = self.head while current_node: print(current_node.data, end=" -> ") current_node = current_node.next print("None") # 연결 리스트 사용 예시 my_list = LinkedList() my_list.append(1) # Head 노드로 1이 추가 my_list.append(2) # 2가 리스트에 추가 my_list.append(3) # 3이 리스트에 추가 my_list.display() # 1 -> 2 -> 3 -> None
코드 동작 설명
-
Node
클래스: 데이터와 다음 노드에 대한 참조를 가지는 노드 클래스입니다. -
LinkedList
클래스: 연결 리스트를 구현하는 클래스로,append()
메서드로 노드를 추가하고,display()
메서드로 리스트를 출력합니다. -
append()
: 새로운 노드를 추가하는 메서드로, 리스트가 비어 있으면 헤드 노드로 추가하고, 그렇지 않으면 마지막 노드 뒤에 추가합니다. -
display()
: 연결 리스트를 출력하는 메서드로, 헤드 노드부터 마지막 노드까지 순회하며 데이터를 출력합니다. -
my_list
:LinkedList
클래스의 인스턴스를 생성하고,append()
메서드로 1, 2, 3을 추가한 후,display()
메서드로 리스트를 출력합니다.
연결 리스트는 언제 사용하나요?
연결 리스트는 데이터의 삽입과 삭제가 빈번하게 발생하는 상황에서 유용하게 사용됩니다.
예를 들어 항목이 빈번하게 변하는 뮤직 플레이어의 재생 목록이나, 운영체제의 메모리 관리 등에서 연결 리스트가 활용됩니다.
연결 리스트(Linked List)의 기본 단위는 무엇인가요?
가이드라인
AI 튜터
배포
디자인
업로드
수업 노트
즐겨찾기
도움말
코드 에디터
실행 결과