가이드라인

데이터를 노드로 연결해 구성하는 연결 리스트(Linked List)

연결 리스트(Linked List)는 데이터 요소들이 노드(Node)라는 단위로 구성되어 서로 연결된 구조를 갖는 자료구조입니다.

각 노드는 데이터와 다음 노드를 가리키는 포인터(Pointer)로 이루어져 있습니다.


연결 리스트의 구조와 특성

연결 리스트는 다음과 같은 구조와 특성을 갖습니다.


노드(Node)

연결 리스트의 기본 단위입니다.

각 노드는 데이터와 하나 또는 두 개의 포인터를 포함하며, 포인터는 다음 노드(또는 경우에 따라 이전 노드)를 가리킵니다.


헤드(Head)

연결 리스트의 첫 번째 노드를 가리키는 포인터입니다.

연결 리스트의 시작점을 나타냅니다.


테일(Tail)

연결 리스트의 마지막 노드를 가리키는 포인터입니다.

테일 노드의 포인터는 일반적으로 None을 가리킵니다.


연결 리스트는 어떻게 구현할 수 있나요?

아래 코드는 파이썬으로 단순 연결 리스트(Singly Linked List)를 구현한 예제입니다.

파이썬 연결 리스트 구현 예시
class Node: def __init__(self, data): # 노드의 데이터 self.data = data # 다음 노드를 가리키는 포인터 self.next = None class LinkedList: def __init__(self, data): # 첫 번째 노드 생성 self.head = Node(data) # 초기에는 헤드와 테일이 동일 self.tail = self.head def append(self, data): # 새 노드 생성 및 연결 node = Node(data) # 테일 노드의 다음 노드로 새 노드를 연결 self.tail.next = node # 새 노드를 테일로 지정 self.tail = node def print_all(self): # 연결 리스트 출력 node = self.head # 노드를 순회하며 데이터 출력 while node: print(node.data, end=" ") node = node.next print() # 연결 리스트 생성 linked_list = LinkedList(5) # 노드 추가 linked_list.append(12) linked_list.append(7) # 연결 리스트 출력 linked_list.print_all() # 출력: 5 12 7

연결 리스트는 어떤 종류가 있나요?

연결 리스트는 노드가 연결되는 방식에 따라 다음과 같이 나뉩니다.


단일 연결 리스트 (Singly Linked List)

각 노드가 다음 노드만을 가리키는 가장 단순한 형태의 연결 리스트입니다.


이중 연결 리스트 (Doubly Linked List)

각 노드가 이전 노드와 다음 노드를 모두 가리킵니다.

양방향 탐색이 가능하며, 삽입과 삭제가 더욱 효율적입니다.


원형 연결 리스트 (Circular Linked List)

마지막 노드가 첫 번째 노드를 가리키는 구조로, 리스트가 순환됩니다.

순환적 작업에 유용합니다.


연결 리스트와 배열의 비교

특성연결 리스트배열
메모리 할당동적으로 메모리를 할당고정 크기의 연속된 메모리 공간 사용
삽입/삭제 연산특정 위치에서의 삽입/삭제가 빠름특정 위치에서 삽입/삭제가 비효율적
임의 접근순차적으로만 접근 가능인덱스를 통한 즉시 접근 가능

연결 리스트는 메모리 관리와 삽입/삭제 연산이 중요한 경우 유리한 반면, 배열은 임의 접근과 데이터 처리 속도가 중요한 경우 적합합니다.

Mission
0 / 1

연결 리스트의 각 요소를 무엇이라고 부르나요?

포인터

헤드

노드

테일

가이드라인

AI 튜터

배포

디자인

업로드

수업 노트

즐겨찾기

도움말

코드 에디터

코드 실행
코드 생성

실행 결과