[Java] 자바 두 개의 큐(Queue)로 스택(Stack) 구현하기

2022. 7. 17. 16:30·Java/자바 이론

https://hyunki99.tistory.com/26

이전 글과 비슷하게 2개의 큐로도 스택을 구현할 수 있다.

 

큐는 많이 사용되는 자료구조 중 하나이다.

먼저 들어온 것이 먼저 나오는 구조로서

FIFO (First In First Out)의 형태를 띈다.

 

2개의 큐를 활용해서 스택을구현하는 방법을 알아보자.


1. 원리

1. 메인 큐와 임시 큐를 준비한다.
2. 메인 큐에 1개의 원소가 남을 때까지 dequeue하고, 임시 큐에 넣는다.
3. 마지막 남은 1개의 원소는 result 변수에 저장한다.
4. 임시 큐에 남아있는 원소들을 다시 메인 큐로 이동시킨다.
5. result를 리턴한다.

2. 예제코드

 

import java.util.LinkedList;
import java.util.Queue;

class StackQ{
	Queue<Integer> mainQueue;
	Queue<Integer> tempQueue;
	
	public StackQ() {
		mainQueue = new LinkedList<>();
		tempQueue = new LinkedList<>();
	}
	
	public void push(int a) {
		mainQueue.offer(a);
	}
	
	public int pop() {
		int result=-1;
		
		if(mainQueue.isEmpty()) {
			return -1;
		}
		
		while(mainQueue.size() != 1) {
			tempQueue.offer(mainQueue.poll());
		}
		result = mainQueue.poll();
		
		//나머지를 다시 main큐로 옮겨준다.
		if(!tempQueue.isEmpty()) {
			while(!tempQueue.isEmpty()) {
				mainQueue.offer(tempQueue.poll());
			}
		}
		
		return result;
	}
}

public class Sq {
	public static void main(String[] args) {
		StackQ sq = new StackQ();
		sq.push(1);
		sq.push(2);
		sq.push(3);

		System.out.println(sq.pop()); //3
		
		sq.push(4);
		System.out.println(sq.pop()); //4
		
		System.out.println(sq.pop()); //2
		System.out.println(sq.pop()); //1
	}
}

 


참고 문헌 : Do it! 자바 완전정복

https://ryu-e.tistory.com/96

'Java > 자바 이론' 카테고리의 다른 글

[Java] 자바 GUI AWT 사용법 ( 간단한 채팅 프로그램 구현 )  (1) 2022.09.01
[Java] 자바 두 개의 스택(Stack)으로 큐(Queue) 구현하기  (0) 2022.07.17
[Java] 자바 객체 정렬 Comparable과 Comparator의 이해  (0) 2022.07.09
[Java] 자바 제네릭(Generic)이란? (Feat. 오토박싱)  (0) 2022.07.09
[Java] 자바 컬렉션(Collection) 프레임워크란?  (0) 2022.07.06
'Java/자바 이론' 카테고리의 다른 글
  • [Java] 자바 GUI AWT 사용법 ( 간단한 채팅 프로그램 구현 )
  • [Java] 자바 두 개의 스택(Stack)으로 큐(Queue) 구현하기
  • [Java] 자바 객체 정렬 Comparable과 Comparator의 이해
  • [Java] 자바 제네릭(Generic)이란? (Feat. 오토박싱)
현기
현기
  • 현기
    현기의 개발블로그
    현기
  • 전체
    오늘
    어제
    • 분류 전체보기 (120)
      • Front-End (39)
        • Next (5)
        • React (8)
        • React Native (11)
        • Flutter (0)
        • Vue (1)
        • JSP (9)
        • HTML, CSS, JS (5)
      • Back-End (16)
        • Node.js (3)
        • Spring (8)
        • Flask (1)
        • AWS (4)
      • DB (5)
        • Oracle (4)
        • MySQL (1)
      • Python (7)
      • Java (27)
        • 자바 이론 (17)
        • 코딩테스트 연습 & 실습 (10)
      • 자료구조 & 알고리즘 (7)
        • 코딩테스트 (6)
        • 알고리즘 (1)
      • 블록체인 (0)
      • 프롬프트 엔지니어링 (0)
      • CS 지식 (5)
      • IT뉴스 (0)
      • 일상 (3)
      • etc (11)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    오블완
    Python
    Spring
    Java
    그리디
    쓰레드
    자바 스프링
    자바
    JDBC
    react
    상속
    REST API
    리액트 네이티브
    서블릿
    JSP
    스택
    포스트맨
    React Native Chart
    react-native-chart-kit
    DI
    자바스크립트
    파이썬
    React Native
    Express
    큐
    next-intl
    티스토리챌린지
    node.js
    오라클
    IS-A
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
현기
[Java] 자바 두 개의 큐(Queue)로 스택(Stack) 구현하기
상단으로

티스토리툴바