자료구조란??
자료구조란 쉽게 말해 데이터를 어떠한 가져오는 방식을 말한다.
비유하자면 짱구의 장난감상자에 장난감은 마구잡이로 들어가 있고, 철수의 장난감상자는 장난감이 잘 정리되어있다.
그래서 짱구는 액션가면장난감을 찾고싶지만 상자 안에 어디있는지 몰라 찾는데 오래 걸렸다.
반대로 철수는 쉽게 찾을 수 있었다.
여기서 장난감은 데이터이고 장난감상자가 데이터구조라고 할 수 있다.
즉 데이터구조는 데이터를 효율적으로 저장하고 꺼내기 쉽게 만드는 것으로 생각해 볼 수 있다.
이러한 자료구조에 종류에는 여러가지가 있는데 이 중에서 stack과 queue에 대해서 알아본다.
stack
stack은 뒤로 넣고 뒤로만 뺄 수 있는 자료구조이다.
자바스크립트 배열에서 pop과 push만 쓸 수 있다 생각하면 편하다.
쌓여있는 종이컵처럼 맨 위에 있는 것을 빼서 사용하거나 위에다가 종이컵을 더 올리는 거로 비교할 수 있다.
우리가 함수를 실행시킬 때도 stack 메모리 안에 저장이 되게 된다.
함수 A, B, C를 순서대로 호출시키면 위에 그림처럼 순서대로 쌓이게 되고 위에서부터 다시 C -> B -> A순으로 실행이 된다.
각 함수는 어느정도의 메모리를 가지고 있기 때문에 너무 쌓이게 된다면 에러가 발생되는데 이것이 바로 stack overflow이다.
stack은 stacktop메소드로 마지막 요소를 검색할 수 있다.
queue
queue는 뒤에서 들어가고 앞에서 빠지는 자료구조이다.
자바스크립트 배열에서 push와 shift 메소드만 있다고 생각하면 편하다.
queue는 맨 처음을 가리키는 head와 끝을 가리키는 rear가 있다.
이렇게 핫도그를 먹기위해 사람들이 줄을 서 있고 맨 뒤에 있는 사람이 rear 맨 앞에서 핫도그를 받는 사람이 head라 할 수 있다.
'개발공부' 카테고리의 다른 글
ES6 class와 super (0) | 2020.01.03 |
---|---|
시간복잡성(Time Complexity) (0) | 2020.01.02 |
JS Instantiation Patterns (0) | 2019.12.28 |
ESLint (0) | 2019.12.26 |
NVM (0) | 2019.12.23 |