일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- nodejs
- java
- Spring Boot
- BFS
- EventListener
- Router
- react
- AWS
- 라우터
- 백준
- sort
- 자료구조
- 브루트포스
- spring
- ELB
- mysql
- url parsing
- 탐욕법
- 완전탐색
- 서버구축
- Algorithm
- EC2
- 백준알고리즘
- 리액트
- 토이프로젝트
- 정렬
- 동적프로그래밍
- 스터디
- 알고리즘
- 다익스트라 알고리즘
- Today
- Total
공부하는 블로그
Algorithm | 자료구조 : Queue & Deque 본문
Queue?
컴퓨터의 기본적인 자료 구조의 한가지로, 먼저 집어 넣은 데이터가 먼저 나오는 FIFO(First In First Out) 구조로 저장하는 형식을 말한다. 나중에 집어 넣은 데이터가 먼저 나오는 스택과는 반대되는 개념이다.
Queue Method
· add() : 리스트의 끝 부분에 새로운 요소를 추가한다.
· remove() : 리스트의 첫 번째 항목을 제거한다.
· peek() : 큐에서 가장 위에 있는 항목을 반환한다.
· isEmpty() : 큐가 비어 있을 때에 true를 반환한다.
Queue Code(JAVA)
import java.util.ArrayList;
import java.util.List;
class MyQueue {
private List<Object> que = new ArrayList<Object>();
public void add(Object item) {
que.add(item);
}
public Object remove() {
int length = que.size();
if(length == 0) {
return null;
}
return que.remove(0);
}
public Object peek() {
int length = que.size();
if(length == 0) {
return null;
}
return que.get(length - 1);
}
public boolean isEmpty() {
if(que.size() == 0) {
return true;
}
return false;
}
}
Queue Library (JAVA)
클래스로 구현된 스택과는 달리 큐 메모리 구조는 별도의 인터페이스 형태로 제공된다. 이러한 Queue 인터페이스를 상속받는 하위 인터페이스는 Deque<E>, BlockingDeque<E>, BlockingQueue<E>, TransferQueue<E>가 있다. 이 중 Deque 인터페이스를 구현한 LinkedList 클래스가 큐 메모리 구조를 구현하는데 가장 많이 사용된다.
Deque<Integer> qu = new ArrayDeque<Integer>();
Deque?
덱(deque)은 Double-ended Queue의 약자로, 양쪽 끝에서 삽입과 삭제가 모두 가능한 자료구조의 한 형태이다. 두 개의 포인터를 사용하여 양쪽에서 삽입과 삭제를 발생시킬 수 있다. 큐와 스택을 합친 형태로 생각할 수 있다.
Deque Method
· push_front() : 맨 앞에 새로운 요소를 삽입한다.
· push_back() : 맨 뒤에 새로운 요소를 삽입한다.
· pop_front() : 맨 앞에 요소를 제거한다.
· pop_back() : 맨 뒤에 요소를 제거한다.
· front() : 맨 앞에 있는 요소를 반환한다.
· back() : 맨 뒤의 있는 요소를 반환한다.
· isEmpty() : 덱이 비었으면 true를 반환한다.
Reference
· https://gmlwjd9405.github.io/2018/08/02/data-structure-queue.html
· http://tcpschool.com/java/java_collectionFramework_stackQueue
'알고리즘 공부' 카테고리의 다른 글
Baekjoon | Q.5052 - 전화번호 목록 (0) | 2020.05.16 |
---|---|
Algorithm | 자료구조 : Hash Table (0) | 2020.05.15 |
Algorithm | 자료구조 : Stack (0) | 2020.02.11 |
Baekjoon | Q.10870 - 피보나치 수 5 (0) | 2020.01.02 |
Baekjoon | Q.1929 - 소수 구하기(에라토스테네스의 체) (0) | 2019.12.29 |