-
스택과 큐(Stack & Queue)공부/JAVA 2021. 8. 15. 01:30728x90
스택(Stack) : LIFO구조 마지막에 저장된 것을 제일 먼저 꺼내게 된다.
저장(push) 추출(pop)
큐(Queue) : FIFO구조 제일 먼저 저장한 것을 제일 먼저 꺼내게 된다.
저장(offer) 추출(poll)
스택은 배열로 구현하는게 좋음(순차적 삭제)
큐는 링크드리스트가 적합함(삭제시 자리이동이 필요없음)
Stack의 메서드
boolean empty( ) : Stack이 비어있는지 알려줌
Object peek( ) : Stack의 맨 위에 저장된 객체를 반환(객체를 꺼내지는 않음)
Object pop( ) : Stack의 맨 위에 저장된 객체를 꺼냄(비었을 때는 EmptyStack Exception발생)
Object push ( ) : Stack에 객체를 저장
int search(Object o) : Stack에서 주어진 객체(o)를 찾아서 그 위치를 반환, 못찾으면 -1를 반환
(배열과 달리 0이 아닌 1부터 시작) indexof와 유사
Queue의 메서드
boolean add(Object o) : 지정된 객체를 Queue에 추가 성공하면 true 반환 예외발생
bollean offer(Object o) : Queue에 객체를 저장 성공하면 true 반환 실패하면 false 반환 (예외발생 x)
Objcet remove( ) : Queue에서 객체를 꺼내 반환 비어있으면 예외발생 *try~catch 사용
Object poll( ) : Queue에서 객체를 꺼내 반환 비어있으면 null을 반환 (예외발생 x)ㄴ
Object element( ) : 삭제없이 요소를 읽어온다. 예외발생
Object peek( ) : 삭제없이 요소를 읽어온다. Queue가 비어있으면 null을 반환 (예외발생 x)
Stack은 클래스
Queue는 인터페이스라 객체 생성 x
1. Queue를 직접구현
2. Queue를 구현한 클래스를 사용
Stack과 Queue 예제
package ex; import java.util.*; public class Pra { public static void main(String[] args) { Stack st = new Stack(); Queue q = new LinkedList(); st.push("0"); st.push("1"); st.push("2"); q.offer("0"); q.offer("1"); q.offer("2"); System.out.println(" Stack "); while(!st.empty()) { System.out.println(st.pop()); //스택에서 요소 하나 꺼내기 } System.out.println(" Queue "); while(!q.isEmpty()) { System.out.println(q.poll()); //큐에서 요소 하나 꺼내기 } } }
결과값
728x90'공부 > JAVA' 카테고리의 다른 글
자바의 특징 (0) 2021.10.30 자바 nextInt() 후 nextLine() (0) 2021.09.12 너비 우선 탐색(BFS) & 깊이 우선 탐색(DFS) (0) 2021.08.27 완전탐색/이분탐색 (0) 2021.08.22 기본형 타입 (0) 2021.08.05