스택이란?
LIFO(Last In First Out, 후입 선출) : 마지막 데이터를 먼저 뺀다.
/*
* Stack의 Method() : push(), peek(), pop(), clear(), size(), empty(), contains()
*/
Stack<Integer> stack = new Stack<>(); //int형 스택 선언
stack.push(1); // stack에 값 1 추가
stack.push(2); // stack에 값 2 추가
stack.push(3); // stack에 값 3 추가
stack.peek(); // stack의 가장 상단의 값 출력
stack.pop(); // stack의 가장 상단의 값 제거
stack.clear(); // stack의 전체 값 제거 (초기화)
stack.size(); // stack의 크기 출력 : 2
stack.empty(); // stack이 비어있는제 check (비어있다면 true)
stack.contains(1) // stack에 1이 있는지 check (있다면 true)
큐란?
FIFO(First IN First Out, 선입 선출) : 먼저 들어간 데이터(old data)를 먼저 뺀다
그림 그리
Enqueue : 큐 맨 뒤에 데이터 추가
Dequeue : 큐 맨 앞쪽의 데이터 삭제
import java.util.LinkedList; //import
import java.util.Queue; //import
// Queue인터페이스의 구현체인 LinkedList를 사용
Queue<Integer> queue = new LinkedList<>(); //int형 queue 선언, linkedlist 이용
Queue<String> queue = new LinkedList<>(); //String형 queue 선언, linkedlist 이용
queue.add(1); // queue에 값 1 추가
queue.add(2); // queue에 값 2 추가
queue.offer(3); // queue에 값 3 추가
queue.poll(); // queue에 첫번째 값을 반환하고 제거 비어있다면 null
queue.remove(); // queue에 첫번째 값 제거
queue.clear(); // queue 초기화
queue.peek(); // queue의 첫번째 값 참조
우선순위 큐란(Priority Queue)?
저장순서와 상관없이 우선순위가 높은데이터를 먼저 뺀다. 우선순위 큐는 저장공간을 배열로 사용하며, 각 요소를 heap자료구조 형태로 저장한다.(heap : 최대, 최소값을 가장빠르게 찾을 수 있음)
import java.util.PriorityQueue; //import
//int형 priorityQueue 선언 (우선순위가 낮은 숫자 순)
PriorityQueue<Integer> priorityQueue = new PriorityQueue<>();
//int형 priorityQueue 선언 (우선순위가 높은 숫자 순)
PriorityQueue<Integer> priorityQueue = new PriorityQueue<>(Collections.reverseOrder());
//String형 priorityQueue 선언 (우선순위가 낮은 숫자 순)
PriorityQueue<String> priorityQueue = new PriorityQueue<>();
//String형 priorityQueue 선언 (우선순위가 높은 숫자 순)
PriorityQueue<String> priorityQueue = new PriorityQueue<>(Collections.reverseOrder());
priorityQueue.add(1); // priorityQueue 값 1 추가
priorityQueue.add(2); // priorityQueue 값 2 추가
priorityQueue.offer(3); // priorityQueue 값 3 추가
priorityQueue.poll(); // priorityQueue에 첫번째 값을 반환하고 제거 비어있다면 null
priorityQueue.remove(); // priorityQueue에 첫번째 값 제거
priorityQueue.clear(); // priorityQueue에 초기화
// Priority Queue에서 우선순위가 가장 높은 값을 참조하고 싶다면 peek()라는 메서드를 사용
priorityQueue.peek(); // priorityQueue에 첫번째 값 참조 = 1
[ 자료구조 ] 힙 (Heap) (0) | 2024.03.16 |
---|---|
[ 자료구조 ] 해쉬 (Hash) (0) | 2024.03.16 |
시간 복잡도 (Time complexity) (1) | 2024.03.09 |