데이터에 편리하게 접근하고 변경하기 위해 데이터를 저장하거나 조직하는 방법.
( + 알고리즘은 그 저장된 데이터를 처리하는 과정이다.)
스택은 흔히 아는 자바스크립트 엔진에서의 콜 스택이 제거되는 방식과 동일하다.
마지막으로 삽입된 element가 가장 먼저 제거되는 방식을 취한다. LIFO(Last In, First Out)인 것이다. 따라서 스택은 브라우저 히스토리(이전 페이지, 다음 페이지) 또는 ctrl+z로 이전 작업을 취소하는 등의 동작에 쓰이는 자료구조이다.
구조를 만들 때 : array와 linked list 모두 크게 상관은 없다.
1) array의 장점 : 각 element들이 서로 연관되어 있기 때문에 속도가 더 빠르다.
하지만 메모리 공간이 한정되어 있기 때문에 할당된 메모리를 다 사용하면 현재 배열을 다른 곳에 복사하기 때문에 메모리를 조금 더 사용하게 될 수도 있다.
2) Linked List의 장점 : 메모리 여기저기에 흩어져있기 때문에 상대적으로 느릴 수 있다. 하지만 반면 메모리 공간이 한정되어 있지 않고 얼마든지 계속 값을 추가할 수 있다는 장점이 있다.
큐는 맛집에 들어가려고 기다리는 대기줄이라고 생각하면 쉽다.
먼저 도착한 사람이 먼저 입장하는 FIFO(First In, First Out) 개념이다.
따라서 레스토랑 앱, 예매 앱, 우버 앱 등에서 큐를 주요한 자료구조로 사용할 것이다.
구조를 만들 때 : array로 만들면 좋지 않다.
Array의 경우 앞에서부터 element를 제거해야 하는데
그 경우 index를 다시 재조정해야 하기 때문에 O(n)이 된다.
따라서 Queue는 반드시 Linked List로 만든다.
장점 : Fast Operation(removing, pushing), Fast Peek, Ordered
- 단점 : Slow Lookup
Hash Table은 Key와 Value가 쌍을 이룬 형태로 데이터가 저장되어 있는 자료구조형을 지칭한다.
객체는 Hash Table이라는 자료구조의 종류 중 하나이다.
배열 내 데이터도 Key와 Value로 이루어져 있기는 하나
배열에서는 Key가 오직 index, 즉 숫자만 가능한 것에 비해
Hash Table에서는 문자열 또한 Key가 될 수 있다.
장점
Fast Search : 배열은 전체를 순회하며 값을 찾아야 하는 반면, 해쉬 테이블은 key를 통해 바로 찾고자 하는 값에 접근이 가능하다.
Fast Insertion and Deletion : 해쉬 테이블은 데이터가 정렬되어 있지 않기 때문에, 바로 값을 추가하고 지울 수 있다.
Fast lookup : 배열과 객체 모두 index 또는 key를 알고 있으면 되므로 lookup도 빠르다.
- 단점 : 무작위 주소 할당으로 인한 문제.
트리는 우리가 아는 나무를 거꾸로 뒤집어 놓은 형태를 생각하면 쉽다.
가장 위는 뿌리인 Root, 그리고 아래로 가지를 치면서 뻗어 내려온다.
각 노드들이 서로 연결되어 있는 자료 구조형으로, 아주 커다란 자료 구조형의 범위 중 하나이다.
실제로 그래프 자료 구조 안에 Trees 자료구조가 포함되어 있고, Trees 안에는 Linked List가 포함되어 있다. 즉, 그래프는 이들을 모두 포괄하고 있는 자료 구조형인 것이다.
참고칼럼
자료 구조(Data Structure)
자바스크립트의 자료형
자바스크립트의 자료구조 1 : 배열(Array)
혹시 자료구조나 알고리즘 js는 어떤거보고 공부하면좋을까요? 책이나 인강추천 부탁드립니다.
js 코테준비는 어떻게하면좋은지도 부탁드려요 !