본문 바로가기

Java

[Java] 예제2 - Stack, Queue 배열로 구현

728x90

stack 클래스

import java.util.Arrays;

public class SuperStack {
    int[] arr = new int[10];
    int cnt = 0;
    String result;

    public void push(int num) { // 요소 저장
        arr[cnt] = num;
        cnt++;
    }

    public int peek() { // 마지막 요소 반환
        int num = arr[cnt-1]; // cnt는 마지막 저장한 요소의 다음 번호이므로 -1
        return num;
    }

    public int pop() {
        int num = arr[cnt-1];
        cnt--; // 이후 요소를 저장할 때 삭제할 요소에 저장하도록 지정
        return num;
    }

    @Override
    public String toString() {
        result = "";
        for(int i = 0; i < cnt; i++) {
            result += arr[i] + " ";
        }
        return result;
    }
}

queue 클래스

public class SuperQueue {
    int[] arr = new int[10];
    int cnt = 0;
    String result;

    public void offer(int num) { // 요소 저장
        arr[cnt] = num;
        cnt++;
    }

    public int peek() { // 첫번째 요소 반환
        int num = arr[0];
        return num;
    }

    public int poll() {
        int num = arr[0];
        for(int i = 0; i < cnt; i++) {
            arr[i] = arr[i+1]; // 첫번째 요소를 없애기 위해 다음 요소를 이전 요소에 저장
        }
        cnt--; // 이후 요소를 저장할 때 현재 마지막 요소에 저장하도록 지정
        return num;
    }
    @Override
    public String toString() {
        result = "";
        for(int i = 0; i < cnt; i++) {
            result += arr[i] + " ";
        }
        return result;
    }
}

 

public class Homework1 {
    public static void main(String[] args) {
        SuperStack stack = new SuperStack();
        SuperQueue queue = new SuperQueue();

        // 스택의 데이터 삽입
        stack.push(1);
        stack.push(5);
        stack.push(7);
        stack.push(10);
        stack.push(11);
        System.out.println(stack);
        // 마지막 데이터 반환
        System.out.println(stack.peek());
        // 스택의 데이터 반환 후 삭제
        System.out.println(stack.pop());
        System.out.println(stack);
        System.out.println("---------------------");

        // 큐의 데이터 삽입
        queue.offer(23);
        queue.offer(28);
        queue.offer(0);
        queue.offer(15);
        System.out.println(queue);
        // 큐의 첫번째 데이터 반환
        System.out.println(queue.peek());
        // 큐의 첫번째 데이터 반환 후 삭제
        System.out.println(queue.poll());
        System.out.println(queue);
    }
}
728x90

'Java' 카테고리의 다른 글

[Java] 예외 처리(Exception)  (0) 2022.04.18
[Java] 예제3 (학생 관리 프로그램)  (0) 2022.04.17
[Java] 예제1 - 영어 단어장  (0) 2022.04.17
[Java] 컬렉션 프레임워크  (0) 2022.04.17
[Java] 인터페이스(interface)  (0) 2022.04.14