본문 바로가기

공부/JAVA

스택과 큐(Stack & Queue)

반응형

스택(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()); //큐에서 요소 하나 꺼내기
		}
		
	}
	
}

결과값

 

 

 

반응형

'공부 > 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