현실을 프로그래밍적으로 표현하는 것
즉, 데이터스트럭쳐를 이해함으로써 프로그래밍 구현 시 어떠한 구조를 따를것인지 결정.
ex) 지도 api 등 구현 시 Graph활용할 수 있다.
"프로그램이란 데이터를 표현하고, 그렇게 표현된 데이터를 처리하는 것"
큰 데이터를 효율적으로 관리 하는 것
데이터가 커질 수록 많아진 데이터를 효율적으로 관리하기 위한 방법중 하나가 데이타스트럭쳐이다.
데이터스트럭쳐를 이해하기 어려운 이유
- 실무 경험이 없어 공감이 안되고 이해하기 힘들다.
=> 공감이 안되니 의심을 하게되고 자신감이 없어진다.
데이터가 많이지면 그룹 관리의 필요성이 증가합니다. array는 데이터를 메모리에 저장하며, 각 element는 고정된 숫자(index)를 갖게 됩니다.
2.리스트(list)
데이터가 순서데로 저장된다. 중복을 허용한다.
array vs list
array는 index를 가지고 있어 해당 데이터를 바로 찾아가기 쉬움. 반면 list는 데이터간의 연결을 중요시 여기기 때문에 찾아가는 과정이 오래걸림.
또한 데이터 추가 삭제시 배열은 해당인덱스를 덮어쓰거나 빈배열로 두게 됨. 반면 리스트는 추가시 그자리의 데이터를 한칸 뒤로 밀리고 삭제시에는 앞으로 땡김.
리스트의 기능
처음, 끝, 중간에 엘리먼트를 추가/삭제하는 기능이 반드시 있어야 함. 그리고 데이터 추가 삭제 시 데이터를 밀고 채우고 할 수 있어야함.
자바스크립트의 경우
splice를 이용하여 리스트 구현 가능
-> 즉 자바스크립트는 배열이 리스트 이기도 하다.
결론적으로 array list는 데이터 추가/삭제가 오래 걸리는 반면 조회는 빠르다.
linked list는 추가/삭제가 빠르고 인덱스 조회가 느리다.
->서로간의 trade-off가 존재한다.