자료구조 Stack 과 Queue (1)

dorazi·2020년 12월 3일
0

Data Structure

목록 보기
1/5
post-thumbnail

Stack과 Queue 란

Stack과 Queue는 실생활에서도 흔하게 볼 수 있는 형태의 자료구조다. 서로 비슷하면서 다른 두 자료구조는 많은 부분에서 활용 되므로 중요도가 높다고 한다!

두개의 정의만 봤을 때는 생각 보다 이해하기 쉬웠고 위의 그림을 보니 둘의 차이점과 성격은 확실하게 알 수 있었다.
하지만 막상 코드로 옮기려하니 실행되어야 할 순서가 머리속에서 꼬여버려서 생각이 많아 졌었다...
지금은 어느정도 이해한거 같으니 다시 정리해보면서 이해 해봐야겠다!

1. Stack

스택을 이해할때 프링글스를 생각하면 이해가 좀 더 쉬울 것 같다.
프링글스를 먹을때 제일 위에 있는 것 부터 꺼내 먹지 않나요? 만약 맨 아래 과자를 먼저 먹고 싶다고 해도 위의 과자 들을 먼저 꺼내야 맨 아래에 있는 과자를 먹을 수 있을 것 입니다!
스택도 이와 같은 구조입니다. LIFO(Last In First Out) 나중에 들어 간 것이 먼저 나온다는 뜻입니다! 프링글스와 같지 않나요?

Stack 슈도코드

포인터 = 0

1. push
1.1. storage[포인터] = 값을 넣어준다.
1.2. 포인터 + 1

2. pop
2.1. storage[포인터] 를 삭제한다.
2.2. 포인터 - 1

3. Size
3.1. 포인터 반환

Stack JS코드

아래와 같이 자바스크립트 코드로 구현했을 때 (원래 객체구조였는데 이해에 도움이 되도록 배열로 변경하였습니다!)

class Stack {
  constructor() {
    this.storage = [];
  }
  size() {
   return this.storage.length
  ]
  push(element) {
    this.storage.push(element)
  }
  pop() {
    let targetel = ''
    targetel = this.storage[this.storage.length - 1]
    
    if(this.storage.length > 0){    // '빈 스택에 pop 연산을 적용했을때 에러 방지
      this.storage.pop()
    }
    return targetel
  }
}

실행을 한다면

stack.push('a')
stack.push('b')
stack.push('c')
console.log(stack.storage) // ['a', 'b', 'c']
stack.pop() // 'c'
console.log(stack.storage) // ['a', 'b']

이와 같이 나중에 들어간 것이 먼저 나오는것을 알 수 있습니다.!!

0개의 댓글