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를 그림으로 간단하게 표현할 수 있다.
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은 더 이상 어려운 존재가 아니라
프로그래밍을 쉽게 할 수 있도록 도와주는 녀석인 셈이다.
'Python' 카테고리의 다른 글
[Python] 파이썬 버전 확인하는 방법: python, python --version (0) | 2021.07.11 |
---|---|
[파이썬 질문] 파이참에서 %matplotlib inline 안될때 (0) | 2021.01.17 |
[Python] open cv란? (0) | 2021.01.15 |
[Python examples#02] 간단한 입출력 예제코드 (0) | 2020.02.03 |
[Python examples#01] 간단한 for loop 예제 코드 (0) | 2020.02.03 |
댓글