목차

  1. 스택(Stack) 클래스 란?
    1. 스택의 메소드
  2. 큐(Queue) 인터페이스 란?
    1. 큐의 메소드
  3.  예제

 

 

 

스택과 큐의 원리

 

 

 

1. 스택(Stack) 클래스 란?

  • LIFO구조 (Last In First Out) : 마지막에 저장된 것을 제일 먼저 꺼내게 된다
  • 앞 부터 추가, 뒤 부터 삭제된다는 점에서 '배열'과 같다

 

 

1) 스택의 메소드

  1. 객체 생성
    • Stack st = new Stack();                                // 스택은 클래스이기에 객체 생성 가능
    • Stack<Integer> st = new Stack<>();            // Integer 타입 스택 생성
    • Stack<String> st = new Stack<>();              // String 타입 스택 생성
  2. 추가
    1. Object push(Object item) : Stack에 객체(item)을 저장한다
  3. 삭제
    1. Object pop() : Stack의 맨 위에 저장된 객체를 꺼낸다 (비었을 땐 EmptyStackException 발생)
  4. 기타
    1. boolean empty() : Stack이 비었는지 알려준다
    2. Object peek() : Stack의 맨 위에 저장된 객체 반환 (비었을 땐 EmptyStackException 발생)
    3. int search(Object o) : Stack에서 주어진 객체(o)를 찾아서 그 위치를 반환 (못찾으면 -1 반환, 배열과 달리 0이 아닌 1부터 시작)

 

 

 

 

2. 큐(Queue) 인터페이스 란?

  • FIFO구조 (First In First Out) : 제일 먼저 저장한 것을 제일 먼저 꺼내게 된다
  • 앞 부터 추가, 앞 부터 삭제된다는 점에서 'LinkedList'와 같다

 

 

1) 큐의 메소드

  1. 객체 생성
    1. Queue q = new LinkedList();                       // 객체 생성 (LinkedList가 Queue를 구현한 클래스)
  2. 추가
    1. boolean add(Object o) : 지정된 객체를 Queue에 추가 (성공 시 true, 저장공간이 부족하면 IllegalStateException 발생) / 예외발생
    2. boolean offer(Object o) : Queue에 객체를 저장 (성공 시 true, 실패 시 false) / 예외발생 안함
  3. 삭제
    1. Object remove() : Queue에서 객체를 꺼내서 반환 (비었으면 NoSuchElementException 발생) / 예외 발생
    2. Object poll() : Queue에서 객체를 꺼내서 반환 (비었으면 null 반환) / 예외발생 안함
  4. 기타
    1. Object element() : 삭제없이 요소를 읽어온다 (비었으면 NoSuchElementException 발생) / 예외 발생
    2. Object peek() : 삭제없이 요소를 읽어온다 (비었으면 null 반환) / 예외발생 안함

 

 

 

 

3. 예제

읽어올 때(요소를 꺼낼 때) 순서 주의

 

 

 

+ Recent posts