본문 바로가기
  • 오늘도 한걸음. 수고많았어요.^^
  • 조금씩 꾸준히 오래 가자.ㅎ
IT기술/자료구조

자료구조 - LinkedList

by 미노드 2022. 9. 12.

Linked List는 Array List와는 다르게 엘리먼트와 엘리먼트 간의 연결(link)을 이용해서 리스트를 구현한 것이다.

Linked list에서 가장 중요한 것은 연결이 무엇인가를 파악하는 것이다.

linked list는 한 건물 내에서 한 회사가 임대한 사무실이 사진처럼 서로 떨어져 있다.
덕분에 직원이 늘어도 큰 걱정이 없습니다. 건물에서 비어있는 곳 아무데나 임대해서 들어가면 되니까.
그런데 방문자가 사무실을 찾는 방법이 비효율적이다.
위의 그림에 있는 방문자가 3번째 사무실을 찾아가려면 우선 첫 번째 화살표의 사무실을 찾아가야 한다.
이 사무실의 직원에게 다음 사무실이 어딘지 물어본다.
그럼 알려주는 사무실로 이동 한 후에 다시 물어봐서 그다음 사무실로 이동한다.

이렇게 물어물어 사무실을 찾아가야 하는 방식이 LinkedList 이며, 검색이 느리다.

ArrayList는 해당 위치의 주소만 알면 바로 찾아가면 되므로 검색이 빠르다.

그렇다면, LinkedList를 쓰면 장점이 어떤게 있을까?

  • 삽입과 삭제가 용이 : 포인터로 연결되어 있어서 가리키는 노드만 변경해주면 됨
  • 크기가 가변적 : 새로운 원소 추가 시 동적으로 크기가 변경된다.
  • 불연속적 메모리 할당 : 빈 공간 없이 데이터를 저장할 수 있다. ( ex. 중간 데이터 삭제 시)
  • 사용한 메모리를 재사용할 수 있다

LinkedList는 내부적으로 Element라는 용어 대신 node 또는 vertex라는 용어를 사용한다.

https://visualgo.net/en/list

 

Linked List (Single, Doubly), Stack, Queue, Deque - VisuAlgo

VisuAlgo is free of charge for Computer Science community on earth. If you like VisuAlgo, the only "payment" that we ask of you is for you to tell the existence of VisuAlgo to other Computer Science students/instructors that you know =) via Facebook/Twitte

visualgo.net

위 사이트에서 Linked List의 자세한 방법을 알 수 있다.

'IT기술 > 자료구조' 카테고리의 다른 글

자료구조 - 그래프(graphe)  (0) 2022.09.15
자료구조 - 트리 (tree)  (0) 2022.09.13
자료구조 - Array List  (0) 2022.09.12
자료구조 - 리스트(list)  (0) 2022.09.12
자료구조 - 배열(Array)  (0) 2022.09.12