ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 스택과 큐(Stack & Queue)
    공부/JAVA 2021. 8. 15. 01:30
    728x90

    스택(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

    댓글

Designed by Tistory.