IM Sprint

IM Sprint 시리즈는, 코드 스테이츠의 웹 개발 심화 코스인 Immersive 코스에서 수강생들과 함께 이야기 나눌 주제에 대해 빠르게 학습하고 정리한 글이다.


1. Stack

스크린샷 2019-11-14 오후 3.37.09.png
↑ FILO fist in last out. 2번과 4번 상태에서는 A를 다른 데이터보다 먼저 꺼낼 수 없다.

method

pop() : 스택에 데이터를 집어넣는다. 호출 시점에 스택이 가득 차있으면, 오버플로우를 반환한다.
push() : 스택에서 데이터를 빼낸다. 호출 시점에 스택이 비어있으면, 언더플로우를 반환한다.
Top() : 제일 최근에 들어간 데이터가 무엇인지 반환한다.
isFull() 큐가 가득 찼는지 여부를 반환한다.
isEmpty() : 스택이 비었는지 여부를 반환한다.

property

front : 가장 위에 위치한 데이터의 인덱스
maxsize : 스택이 데이터를 저장할 공간 한도

Persuedo Code

  1. 데이터를 넣을 경우 pop() 함수를 호출한다.
    1-1. 스택이 가득 찼는지 여부를 isFull() 함수로 알아본다.
    1-1-1. 가득 찼다면 overflow를 반환한다.
    1-1-2. 차지 않았다면 1-2로 이동한다.
    1-2. front 값에 1을 더한 위치에 데이터를 넣는다.
    1-3. front 값을 1 증가시킨다.

  2. 데이터를 빼낼 경우 push()함수를 호출한다.
    2-1. 스택이 완전히 비었는지 여부를 isEmpty() 함수로 알아본다.
    2-1-1. 완전히 비었다면 underflow를 반환한다.
    2-1-2. 비지 않았다면 2-2로 이동한다.
    2-2. front 값에 위치한 데이터를 빼낸다.
    2-3. front 값을 1 감소시킨다.

2. Queue

스크린샷 2019-11-14 오후 4.32.21.png
↑ FIFO first in first out. 처음 넣은 것이 가장 먼저 빠져나가는 일방통행 구조다.

method

enqueue() : 큐에 데이터를 넣는다. 호출 시점에 큐가 가득 차있으면, 오버플로우를 반환한다.
dequeue() : 큐에서 데이터를 빼낸다. 호출 시점에 큐가 비어있으면, 언더플로우를 반환한다.
peek() : 가장 앞에 위치한 데이터가 무엇인지 반환한다.
isFull() : 큐가 가득 찼는지 여부를 반환한다.
isEmply() : 큐가 비었는지 여부를 반환한다.

property

front : 가장 앞에 위치한 데이터의 인덱스
rear : 가장 뒤에 위치한 데이터의 인덱스
maxsize : 큐가 데이터를 저장할 공간 한도

Persuedo Code

  1. 데이터를 넣을 경우 enqueue() 함수를 호출한다.
    1-1. 큐가 가득 찼는지 여부를 isFull() 함수로 알아본다.
    1-1-1. 가득 찼다면 overflow를 반환한다.
    1-1-2. 비지 않았다면 1-2로 이동한다.
    1-2. rear 값에 1을 더한 위치에 데이터를 넣는다.
    1-3. rear 값을 1 증가시킨다.

  2. 데이터를 빼낼 경우 dequeue()함수를 호출한다.
    2-1. 큐가 완전히 비었는지 여부를 isEmpty() 함수로 알아본다.
    2-1-1. 완전히 비었다면 underflow를 반환한다.
    2-1-2. 비지 않았다면 2-2로 이동한다.
    2-2. front 값에 위치한 데이터를 빼낸다.
    2-3. front 값에 1을 더한 위치에 있는 데이터부터, rear값에 위치한 데이터의 인덱스를 모두 1씩 감소시킨다.