Written by
Sunwoo Han
on
on
Stack, Queue
스택(Stack) 이란?
스택(stack)은 후입선출(Last-In-First-Out, LIFO)의 구조를 가지고 있다.
Stack 클래스
Stack 클래스는 List Collection 클래스의 Vector 클래스를 상속받아, 스택 메모리 구조의 클래스를 제공한다. 가장 나중에 저장된(push) 데이터가 가장 먼저 인출(pop)되는 구조이다. 스택의 가장 상단의 요소를 top이라고 한다.
Stack 클래스는 스택 메모리 구조를 표현하기 위해, Vector 클래스의 메소드를 5개만 상속받아 사용한다.
boolean empty() | 해당 스택이 비어 있으면 true, 비어 있지 않으면 false를 반환한다. |
E peek() | 해당 스택의 제일 상단에 있는(제일 마지막으로 저장된) 요소를 반환한다. |
E pop() | 해당 스택의 제일 상단에 있는(제일 마지막으로 저장된) 요소를 반환하고, 해당 요소를 스택에서 제거한다. |
E push(E item) | 해당 스택의 제일 상단에 전달된 요소를 삽입한다. |
int search(Object o) | 해당 스택에서 전달된 객체가 존재하는 위치의 인덱스를 반환한다. 이때 인덱스는 제일 상단에 있는(제일 마지막으로 저장된) 요소의 위치부터 0이 아닌 1부터 시작한다. |
큐(Queue) 란?
큐(Queue)는 선입선출(First-In-First-Out, FIFO)의 구조를 가지고 있다.
Queue 클래스
클래스로 구현된 스택과 달리 큐 메모리 구조는 별도의 인터페이스 형태로 제공된다. 이러한 인터페이스를 상속받는 하위 인터페이스는 다음과 같다.
- Deque
- BlockingDeque
- BlockingQueue
- TransferQueue
Queue 인터페이스를 직/간접적으로 구현한 클래스는 상당히 많다. 그 중에서 Deque 인터페이스를 구현한 LinkedList 클래스가 큐 메모리 구조를 구현하는데 가장 많이 사용된다.
큐 메모리 구조는 가장 먼저 저장된(push) 데이터가 가장 먼저 인출(pop)되는 구조이다.
Queue 인터페이스는 큐 메모리 구조를 표현하기 위해, 다음과 같은 Collection 인터페이스 메소드만 상속받아 사용한다.
boolean add(E e) | 해당 큐의 맨 뒤에 전달된 요소를 삽입한다. 만약 삽입에 성공하면 true, 큐에 여유 공간이 없어 실패하면 illegalStateException을 발생시킨다. |
E element() | 해당 큐의 맨 앞에 있는(제일 먼저 저장된) 요소를 반환한다. |
boolean offer(E e) | 해당 큐의 맨 뒤에 전달된 요소를 삽입한다. |
E peek() | 해당 큐의 맨 앞에 있는(제일 먼저 저장된) 요소를 반환한다. 만약 큐가 비어있으면 null을 반환한다. |
E poll() | 해당 큐의 맨 앞에 있는(제일 먼저 저장된) 요소를 반환하고, 해당 요소를 큐에서 제거한다. 만약 큐가 비어있으면 null을 반환한다. |
E remove() | 해당 큐의 맨 앞에 있는(제일 먼저 저장된) 요소를 제거한다. |
Reference
Comments
CS 의 다른 글
-
HTTP 헤더 - 캐시와 조건부 요청 03 Jan 2022
-
HTTP 헤더 - 일반 헤더 26 Dec 2021
-
HTTP 상태코드 20 Dec 2021
-
HTTP 메서드 활용 17 Dec 2021
-
HTTP 메서드 12 Dec 2021
-
HTTP 기본 09 Dec 2021
-
URI와 웹 브라우저 요청 흐름 08 Dec 2021
-
인터넷 네트워크 06 Dec 2021
-
Single LinkedList 01 Oct 2021
-
ArrayList 24 Sep 2021
-
List Interface(리스트 인터페이스) 23 Sep 2021
-
자바 컬렉션 프레임워크 20 Sep 2021
-
면접 기초 질문 리스트 31 Aug 2021
-
인프라 기초 총정리 14 Aug 2021
-
하드웨어와 네트워크 기초 지식 03 Aug 2021
-
오버레이 네트워크(Overlay Network) 02 Aug 2021
-
이건 꼭 알고 가자! 면접 출제 빈도가 높은 질문들 19 May 2021
-
1분 자기소개 19 May 2021
-
백엔드 개발자 면접 / 학습내용 15 Feb 2021
-
너비 우선 탐색(breadth-first search, BFS) 22 Oct 2020
-
깊이 우선 탐색(depth-first search, DFS) 10 Oct 2020
-
크리티컬 섹션(Critical Section) 10 Sep 2020
-
삽입 정렬(Insertion Sort) 04 Sep 2020
-
선택 정렬(Selection Sort) 04 Sep 2020
-
거품 정렬(Bubble Sort) 04 Sep 2020
-
LRU 알고리즘 31 Aug 2020
-
Stack, Queue 29 Aug 2020
-
awk 명령어 사용법 24 Aug 2020
-
grep 명령어 사용법 23 Aug 2020
-
DNS의 이해 14 Aug 2020
-
대칭키와 공개키 10 Aug 2020
-
HTTP & HTTPS 10 Aug 2020