[23/06/13] Stack 과 Queue

김보아·2023년 6월 13일
0

Stack

: 자료 구조의 한 종류로 Last In First Out, LIFO "후입 선출" 구조

데이터가 입력된 순서의 역순일때 사용한다.

[기본 연산]

  • 데이터 추가 (Push)
  • 데이터 꺼내기 (Pop)
  • 데이터 확인 (Peek)

Queue

: 먼저 들어온 데이터가 먼저 나가는 First In First Out, FIFO "선입 선출" 구조

입력 순서대로 데이터 처리시에 사용한다. ex) 프린터 출력 대기열

front : 앞쪽
rear : 뒤쪽

dequeue : 데이터 꺼내기
enqueue : 데이터 추가

Deque

: Double-Ended Queue의 줄임말로 큐의 양쪽에 데이터를 넣고 뺄 수 있는 형태의 자료구조

하나의 자료구조에 큐와 스택을 합쳐 놓은 형태.

Deque의 앞쪽으로 데이터를 넣고 뒤쪽에서 빼면 => Queue
Deque의 앞쪽에 데이터를 넣고 앞쪽에서 빼면 => Stack

Deque값 추가 메소드

deque.addFirst(); // Deque의 앞쪽에 데이터를 삽입, 용량 초과시 Exception
deque.offerFirst(); //  Deque의 앞쪽에 데이터를 삽입 후 true, 용량 초과시 false

deque.addLast(); // Deque의 뒤쪽에 데이터를 삽입, 용량 초과시 Exception
deque.add(); // addLast()와 동일
deque.offerLast(); //Deque의 뒤쪽에 데이터를 삽입 후 true, 용량 초과시 false
deque.offer(); // offerLast()와 동일

deque.push(); // addFirst()와 동일
deque.pop(); // removeFirst()와 동일

Deque값 제거 메소드

deque.removeFirst(); // Deque의 앞에서 제거, 비어있으면 예외
deque.remove(); // removeFirst()와 동일
deque.poll(); // Deque의 앞에서 제거, 비어있으면 null 리턴
deque.pollFirst(); // poll()과 동일

deque.removeLast(); // Deque의 뒤에서 제거, 비어있으면 예외
deque.pollLast(); // Deque의 뒤에서 제거, 비어있으면 null 리턴

Deque 다양한 메소드

// Deque의 앞쪽에서 찾아서 첫 번째 데이터를 삭제
deque.removeFirstOccurrence(Object o);

// Deque의 뒤쪽에서 찾아서 첫 번째 데이터를 삭제
deque.removeLastOccurrence(Object o);

// removeFirstOccurrence() 메소드와 동일
deque.remove(Object o);

deque.getFirst(); // 첫 번째 엘리먼트를 확인, 비어있으면 예외
deque.peekFirst(); // 첫 번째 엘리먼트를 확인, 비어있으면 null 리턴
deque.peek();// peekFirst()와 동일

deque.getLast(); // 마지막 엘리먼트를 확인, 비어있으면 예외
deque.peekLast();// 마지막 엘리먼트를 확인, 비어있으면 null 리턴

deque.contain(Object o); // Object 인자와 동일한 엘리먼트가 포함되어 있는지 확인
deque.size(); // Deque에 들어있는 엘리먼트의 개수

출처 : https://hbase.tistory.com/128

profile
개발하는 개발자

0개의 댓글