Search

덱

Deck (덱)

덱(Deque)은 Double Ended Queue의 μ•½μžλ‘œ, μ–‘μͺ½ λμ—μ„œ μ‚½μž…κ³Ό μ‚­μ œκ°€ λͺ¨λ‘ κ°€λŠ₯ν•œ μžλ£Œκ΅¬μ‘°μž…λ‹ˆλ‹€. μŠ€νƒκ³Ό 큐의 νŠΉμ„±μ„ λͺ¨λ‘ 가지고 μžˆμŠ΅λ‹ˆλ‹€.

핡심 μš”μ†Œ

λ©”μ„œλ“œ
μ„€λͺ…
addFirst()
덱의 μ•žμͺ½μ— μš”μ†Œ μΆ”κ°€
addLast()
덱의 λ’€μͺ½μ— μš”μ†Œ μΆ”κ°€
removeFirst()
덱의 μ•žμͺ½ μš”μ†Œ 제거
removeLast()
덱의 λ’€μͺ½ μš”μ†Œ 제거
getFirst()
덱의 μ•žμͺ½ μš”μ†Œ 쑰회
getLast()
덱의 λ’€μͺ½ μš”μ†Œ 쑰회

Java 직접 κ΅¬ν˜„ μ˜ˆμ‹œ

public class Deque<T> { private class Node { T data; Node prev; Node next; Node(T data) { this.data = data; } } private Node front; private Node rear; private int size; public void addFirst(T item) { Node newNode = new Node(item); if (isEmpty()) { front = rear = newNode; } else { newNode.next = front; front.prev = newNode; front = newNode; } size++; } public void addLast(T item) { Node newNode = new Node(item); if (isEmpty()) { front = rear = newNode; } else { newNode.prev = rear; rear.next = newNode; rear = newNode; } size++; } public boolean isEmpty() { return size == 0; } }
Java
볡사

Java Collections Framework μ‚¬μš© μ˜ˆμ‹œ

import java.util.ArrayDeque; import java.util.Deque; public class DequeExample { public static void main(String[] args) { Deque<String> deque = new ArrayDeque<>(); // μš”μ†Œ μΆ”κ°€ deque.addFirst("First"); deque.addLast("Last"); // μ•žμͺ½μ—μ„œ μš”μ†Œ 확인 System.out.println(deque.getFirst()); // "First" 좜λ ₯ // λ’€μͺ½μ—μ„œ μš”μ†Œ 확인 System.out.println(deque.getLast()); // "Last" 좜λ ₯ // μš”μ†Œ 제거 deque.removeFirst(); deque.removeLast(); // λΉ„μ–΄μžˆλŠ”μ§€ 확인 System.out.println(deque.isEmpty()); // true 좜λ ₯ } }
Java
볡사