미누에요
[자료구조] 연결 리스트(Linked List) 본문
연결 리스트(Linked List)
연결 리스트는 data와 link로 이루어진 여러 개의 묶음이 이어져있는 형태이다.
연결리스트를 사용하기 위해, C언어 기준으로 우리는 구조체를 사용한다.
typedef struct _node
{
int data; // 데이터를 저장하는 변수
struct _node *link; // 다음 노드를 가리킬 링크
} Node;
기본적으로 위의 형태와 같이 작성한다.
data는 사용자의 필요에 따라 int형 값이 아닌 다른 변수형으로 선언해도 무방하다.
그리고 다음 노드와의 연결을 위한 link 가 필요한데, 이 link는 우리가 선언한 구조체를 그대로 자료형으로 사용하여 포인터 형식으로 선언한다.
말 그대로 다음 노드를 "가리키는" 것이 목적이기 때문에 포인터 변수로 선언한다.
연결 리스트의 종류는 아래와 같다.
1. 단순 연결리스트 (Singly Linked List)
다음 노드에 대한 참조값만을 가지고 있는 가장 기본적인 연결리스트이다.
반대방향의 값을 탐색하는 데 어려움이 있다.
2. 이중 연결리스트 (Doubly Linked List)
양방향으로 향하는 노드가 있기때문에 이전 노드도 탐색이 유리하다.
값을 삭제할 때, 양쪽에서 두 개의 노드가 있기때문에 훨씬 간단하다.
하지만 두 개의 노드를 가지고 있는만큼 자료구조의 크기가 약간 더 크다는 단점이 있다.
3. 원형 연결리스트(Circular Linked List)
기본적인 단일 연결리스트는 마지막 노드의 값이 NULL인데, 마지막 노드의 link를 첫번째 노드로 연결해준 형식이다.
다음 게시물에서는 기본 단일 연결 리스트를 구현해보겠다.
'자료구조' 카테고리의 다른 글
[자료구조] 원형 연결 리스트(Circular Linked List) 구현 - C (0) | 2024.05.01 |
---|---|
[자료구조] 단일 연결 리스트(Singly Linked List) 노드 삭제(Delete) 구현 - C (0) | 2024.03.30 |
[자료구조] 단일 연결 리스트(Singly Linked List) 입력, 출력함수 구현 - C (0) | 2024.03.30 |
[자료구조] 윤성우의 열혈 자료구조 ch 04. 연결리스트 2 04-2 문제풀이 (0) | 2024.03.25 |
[자료구조] 윤성우의 열혈 자료구조 04-1 문제풀이 (0) | 2024.03.25 |