본문 바로가기
컴퓨터 공학/Algorithm

[ 알고리즘 ] 연결 리스트(Linked List) 용도 / 오늘날 사용 빈도

by hahehohoo 2020. 7. 9.
반응형

연결 리스트(Linked List) 용도/사용빈도

 

 

1. 배열의 한계를 극복하기 위해

배열(or 배열 기반 리스트)의 한계

- 배열은 정형화돼서 색인으로 접근해야 합니다.

- 초기에 메모리 공간을 잡아두고, 변경이 불가능합니다.

- 삭제 시 데이터의 이동(복사)가 빈번히 발생합니다. 

 

하지만 연결리스트는 메모리 크기가 얼마인지 중요하지 않습니다. 노드 하나 만들어 놓고 필요할 때마다 만들어 연결하기 때문에 길이가 자유롭습니다. 데이터를 삽입/삭제할 때도 위치만 안다면 삭제하고 복사할 필요없이 진행할 수 있습니다. 

 

이런 개념은 연결 리스트는 배열보다 메모리를 좀 더 자유롭게 사용하면서 다음 것(데이터)를 가리킬 수 있는 방식으로 볼 수 있습니다.

 


2. 삽입, 삭제가 빈번한 경우에 사용

연결 리스트에서는 삽입, 삭제를 위해 복사하고 당기는 경우가 없습니다. 

 

왜 그런지 좀 더 이해하고 싶다면 아래 글을 참고해주세요. 

연결리스트(Linked List) 삽입/조회(그림으로 이해하기)

연결리스트(Linked List) 삭제 (그림으로 이해하기)

 

 

 

 


3. 커널 모드 프로그래밍에서 사용

커널 모드 성능상 데이터를 굉장히 빠르게 처리해야하기 때문에 삽입/삭제가 자유로운 연결 리스트를 사용합니다.

과거에 사용돼었던 것이 지금까지 유지되는 경우도 있습니다. 

 


※ 사실 오늘날 어플리케이션 프로그램에서 연결 리스트의 사용 빈도는 많이 줄었습니다.

그 이유는 하드웨어 발전이랑 관련이 있습니다. CPU에 들어가는 캐시 메모리는 연속된 메모리에 접근할 때 굉장히 빠른 속도를 보장합니다. 따라서 이 부분에 있어서 연결 리스트보다는 배열이 더 유리합니다. 그래서 연결 리스트보다는 다른 언어의 다른 자료구조가 더 활용되고 있는데 그 중 하나가 C#언어의 리스트입니다. 다른 말로 동적 배열입니다. 배열로 잡아두고 배열 크기가 커지면 크기만 바뀌는 개념입니다.  

 

 

------------------------------

알고리즘 개념 모아보기 

------------------------------

 

 

 

 

 

 

반응형


댓글