스택, 큐, 데크

SR Lee·2023년 3월 25일
0

자료구조

목록 보기
3/4

1. Stack

LIFO 후입선출

동작

추가: push
제거: pop

공간확인

top: 데이터 이쪽에 추가되고 꺼내짐
bottom: 가장 먼저 들어온 데이터가 있다

예시

함수 콜 스택, 수식 계산, 인터럽트처리

2. Queue

FIFO 선입선출

동작

추가: enqueue
제거: dequeue

공간확인

rear: 데이터 이쪽에 추가
front: 데이터 이쪽에 꺼냄

특징

인터페이스로 구현되어 있기 때문에 바로 사용하지 못하고, LinkedList가 필요하다.

import java.util.LinkedList;
import java.util.Queue;

public class Main {
    public static void main(String[] args) {
        Queue queue = new LinkedList(); 
             //NOT Queue queue = new Queue()

예시

프린터 출력 대기열, BFS (Breath First Search)

3. Dequeue

양방향 입출력 (스택과 큐 합성, doubly ended queue)

동작

추가: add (offer)
제거: remove (poll)

공간확인

rear & front

데크 종류

Scroll (입력제한 데크)

:rear나 front, 한쪽의 입력 재한한 데크

Shelf (출력제한 데크)

:rear나 front, 한쪽의 출력 재한한 데크

Methods

Methods inherited from interface java.util.Collection
:addAll, contains, containsAll, equals, hashCode, isEmpty, iterator, remove, removeAll,retainAll, size, toArray

size() -> 크기 알려줌 [1, 2, 3] 경우, 크기 3
contains() -> true/false

Some Methods for Stack

push() -> LIFO 따라 넣기; sovt(stack.push())하면 그 값 보여줌
pop() -> LIFO 따라 지우기
peek() -> pop/push안하고 가장 마지막으로 넣은 값 보여준다
empty() -> 다 비움

Some Methods for Queue

add() -> 값 추가
remove() -> 가지고 값 삭제
peek() -> 값 가지고 오지만 삭제는 안함. 만약 가져올 값이 없으면 null

Some Methods for Dequeue

Front 부분 입력/출력
addFirst() || offerFirst()

removeFirst() || pollFirst()

Rear 부분 입력/출력
addLast() || offerLast()

removeLast() || pollLast()

getFirst()
peekFirst()
...

profile
studying backend

0개의 댓글