Javascript 자료구조 01 : Array, Queue, Stack

protect-me·2021년 4월 5일
0

자료구조

목록 보기
1/7

Array(배열)

데이터를 순차적으로 저장, 효율적 관리
장점: index를 통한 빠른 접근 가능
단점: 데이터 삽입/삭제 비용이 높음 (삽입과 삭제되는 데이터뿐만 아니라 다른 데이터들의 index도 모두 수정해야하기 때문)

const arr = ["a", "b", "c", "d"]
arr.splice(1, 0)
// index 1의 "b"를 삭제
console.log(arr) // "a", "c", "d"
// 기존 index 2와 3에 있던 "c"와 "d"가 index 1, 2로 옮겨짐

Queue(큐)

FIFO(First-In, First-Out)
선입선출. 먼저 들어가면, 먼저 나온다.

  • Enqueue(인큐): 큐에 데이터를 넣음
    array.push()
  • Dequeue(데큐): 큐에서 데이터를 꺼냄
    array.shift()

*unshift와 pop을 통해서도 구현이 가능하지만, 앞서 설명한 바와 같이 Array(배열) 앞쪽에 데이터를 추가하면 다른 데이터의 index를 변경하는데에 비용이 발생하기 때문에 push, shift로 구현

const arr = [];
arr.push(1);
arr.push(2);
arr.push(3);
console.log(arr); // [1, 2, 3]
arr.shift(); // 1
console.log(arr); // [2, 3]

Stack(스택)

LIFO(Last-In, First-Out)
선입후출. 먼저 들어가면, 나중에 나온다.

  • push(푸시): 스택에 데이터를 넣음
    array.push()
  • pop(팝): 스택에서 데이터를 꺼냄
    array.pop()

장점: 빠른 데이터 저장/읽기
단점: 데이터 최대 갯수 미리 확보, 자원 낭비 가능성

*재귀함수와 같이 함수 내부에서 다른 함수를 호출하면 stack의 구조를 따르게 된다.

const arr = [];
arr.push(1);
arr.push(2);
arr.push(3);
console.log(arr); // [1, 2, 3]
arr.pop(); // 3
console.log(arr); // [1, 2]

  • 2020.04.05 최초 작성

댓글 환영 by.protect-me

profile
protect me from what i want

0개의 댓글