-
[Java] 스택 / 큐 / 덱[Java] 2024. 5. 12. 23:36
스택 (Stack)
LIFO(last in, firstout)
리스트의 한쪽 끝에서 수행 되는 선형 리스트 한가지 형태( 삽입(push), 삭제(pop) )
예시 설명 함수 호출 함수 내부에서 사용되는 변수를 스택에 저장. 호출이 끝나면 스택에서 제거 수식 계산 수식에서 괄호를 계산할때 스택 이용 웹 브라우저 방문 기록 방문한 웹 페이지를 스택에 저장. 이전 페이지로 돌아갈때 이용. 메서드 설명 push() 스택에 추가, 반환 peek() 마지막 요소 반환 pop() 마지막 요소 제거, 반환 isEmpty() 비어있는지 확인, 비어있으면 true , 아닐경우 false search() 해당위치 반환, 없으면 -1 반환
큐 (Queue)
FIFO(first in , first out)
여러개의 데이터 항목을 일정한 순서대로 나열 하는 형태( push(입력), pop(삭제) )
Java에서 큐는 인터페이스의 역할을 수행하며 ArrayDeque, LinkedList, PriorityQueue 등을 통해서 구현체를 구현
예시 설명 프로세스 관리 / 대기열 대기열에 줄을 서서 업무를 처리 하는것이 큐의 예시.
먼저 온 순서대로 업무를 처리프로세스 관리 프로세스가 CPU를 할당받기 위해 대기하는 큐를 사용 너비 우선 탐색(BFS, Breadth-First Search) 크래프 탐색 알고리즘에서 인접한 노드를 우선으로 방문해야 하는 경우 큐를 사용 캐시(Cache) 캐시 메모리에서 데이터를 저장하고 꺼낼 때 , 가장 오래된 데이터를 먼저 삭제하는 정책을 구현할때 큐를 사용 메서드 설명 offer( ) 맨 뒤에 요소 추가. 가득 차서 추가할 수 없는 경우 false 반환 add() 맨 뒤에 요소 추가. 추가할 수 없는 경우 illegalStateException 발생 poll() 맨 앞에서 요소 제거 및 반환 . 비어있으면 null 반환 peek() 맨 앞에서 요소 반환 . 비어 있으면 null 반환 clear() 모든 요소 제거
덱 (Deque)
양 쪽에서 삽입과 삭제가 가능한 자료구조.
스택과 큐의 기능을 모두 가지고 있는 자료구조로 FIFO오 LIFO 개념이 모두 적용 될 수 있음.
예시 설명 양방향 큐(Double-Ended Queue) 앞과 뒤에서 삽입과 삭제가 가능한 덱은 양방향 큐라고 불림 회문(Palindrome) 판별 앞이나 뒤에서 읽을때 동일한 문자열을 검사할때 사용 최대, 최솟값 검색 슬라이딩 윈도우(Sliding Window) 알고리즘을 이용해 최대/최솟값을 검색할 때 사용 메서드 설명 addFirst() 맨 앞에 요소 추가 addLast() 맨 뒤에 요소 추가 removeFirst() 맨 앞에서 요소 제거, 반환. 비어있으면 예외발생 removeLast() 맨 뒤에서 요소 제거, 반환. 비어있으면 예외발생 getFirst() 맨 앞에서 요소 반환. 비어있으면 예외발생 getLast() 맨 뒤에서 요소 반환. 비어있으면 예외발생 '[Java]' 카테고리의 다른 글
[Java]멀티태스킹과 스레드 (1) 2024.11.20 [Java] 결합도 / 응집도 (0) 2024.08.02 [Java] 명명규칙 / 형변환 / Steak / Heap (0) 2024.03.15 [Java] 접근 제한자 / 연산자 (0) 2024.03.15 [Java] 자바 언어 특징 (0) 2024.03.15