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
볡μ¬