본문 바로가기
Python

[Python] Linked List

by Henry Cho 2020. 9. 30.
728x90

python 코드로 구현된 Linked List나 Tree Structures를 어떻게 하면 쉽게 이해할 수 있을까요?

 

프로그래밍에 대한 개념을 이해하고자 할 때 제일 좋은 방법은 해당 기능을 왜 사용하는지를 아는 것이 좋다.

Bro가 질문한 Linked list(연결 리스트)나 Tree structures(트리 구조)에 대해

왜 사용하는지를 안다면 보다 더 쉽게 이해할 수 있을 것이다.

따라서 이번 포스트에서는 우선 Linked list가 무엇이며, 왜 사용하는지에 대해서 이야기를 나눠보도록 하겠다. 

 

필자가 가장 먼저 하는 방법은 Linked list가 무엇인지에 대한 사전적 의미를 알고 가는 것이다.

Linked list는 한국말로 연결 리스트라고 부르며 말 그대로 연결한다는 특징을 가진 리스트이다.

Linked list는 어떤 방식으로 사용되느냐에 따라서 단일, 이중, 원형 등 다양한 형태의 Linked list가 존재한다.

쉽게 말해서 응용된 버전에 있다고 보면 된다.

이번 포스트에서는 가장 기본 형태라고 할 수 있는 단일, 즉 한 줄로 연결된 linked list에 대해서 살펴보도록 하자.

 

여기서 연결되는 것이 노드들이며, 각 노드에 있는 데이터와 포인터를 한 줄로 연결해주는

데이터 구조 즉, data strucutre의 한 종류에 해당한다.

Linked list를 그림으로 표현한 예시

 

위와 같이 Linked list를 그림으로 간단하게 표현할 수 있다.

Head에서 첫 데이터 값인 5를 가져가고 이어서 6, 3, 22를 끝으로 Linked list가 끝나는 걸 알 수 있다.

데이터값 오른편에 있는 경계선은 박스 안에 데이터 값과 주소 값이 따로 있는 걸 나타낸다.

한마디로 데이터값 5 바로 옆 공간은 5의 값에 대한 Address가 있다고 생각하면 된다.

혹시나 Linked list에 대한 구체적인 설명이 더 필요하다면 댓글에 남겨주면 추가로 구체적인 포스트를 올리도록 하겠다.

 

그럼 Linked list는 언제 사용되는가?

사실 Linked list는 array의 한 종류이자 연결이라는 특징을 가진 list이다.

쉽게 말해서 너무 어렵게 생각할 필요가 없다는 것이다.

첫 번째로 Linked list는 데이터의 특정 시간대의 데이터 삽입과 삭제가 가능하다는 특징을 가지고 있기에 real time system을 구성할 때 사용되기도 한다.

또는 별도의 re-declare(재선언) 없이도 원하는 데이터를 추가할 수 있기 때문에 입려 되어야 하는 값의 양을 알지 못할 때 사용하기 용이하다.

마지막으로 Priority queue처럼 원하는 데이터 값을 원하는 위치에 추가할 수 있다.

 

이러한 핵심적인 특징을 안다면 Linked list은 더 이상 어려운 존재가 아니라

프로그래밍을 쉽게 할 수 있도록 도와주는 녀석인 셈이다.

728x90

댓글