Linked List

배열(Array)은 순차적으로 연결된 공간에 데이터를 나열하는 자료구조이고, 링크드 리스트(Linked List)는 떨어진 곳에 존재하는 데이터를 화살표로 연결해서 관리하는 자료구조 입니다. 배열은 미리 특정한 연결된 공간을 확보하고 데이터를 쓰고 있는 자료구조이고, 링크드 리스트는 필요할 때 마다 데이터를 추가할 수 있는 구조입니다. 배열의 단점을 극복한 자료구조가 링크드 리스트라고 볼 수 있습니다.

Linked List의 구조와 용어

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/afde909f-0b3e-4050-8ff5-5cb22e0ecdbe/Untitled.png

출처: https://velog.io/@keemtj/자료구조-링크드-리스트Linked-List

Node

Linked List는 노드라는 객체로 이루어져 있습니다.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/5610e7e4-e9fe-43fa-9daf-41fd8741b54f/Untitled.png

위 그림과 같이 Data를 저장할 공간과 다음 주소를 가리킬 공간이 필요합니다. 사용자가 입력하는 정보를 DATA영역에 담고 노드가 추가될 때마다 Next address를 이용하여 다음 노드와 연결합니다.

전체적인 연결리스트 구조는 아래와 같이 나타낼 수 있습니다.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/963cd2ec-a03c-4eea-a265-edcbaa530fc1/Untitled.png

이와 같이 각 노드는 연속된 공간에 저장되어 있지 않고 메모리의 여러 부분에 분포되어 있습니다.

각 노드에 다음 노드의 주소를 저장함으로써 다음 노트를 탐색할 수 있습니다. 다음 주소를 가리켜야 하기 때문에 포인터를 이용해 구현할 수 있습니다.

노드가 가리키는 다음 주소가 NULL이면 이 노드는 마지막 노드라고 할 수 있습니다.

Linked List 구현

Linked List를 구현하기 위해서는 다음과 같은 함수를 구현해야 합니다.

초기화(init) / 삽입(Insert) / 삭제(Remove)