본문 바로가기

Algorithms/개념

ArrayList를 이용한 Stack 구현 및 기본 개념 정리

오늘은 선형자료구조인 스택의 개념 및 arrayList를 통해서 stack을 간단히 구현 그리고 마지막으로 stack함수에는 어떤 것들이 있는 지 알아보는 시간을 가지려고 한다.

 

ㆍStack의 개념

- 데이터를 차곡차곡 쌓아 올리는 형태의 자료구조

- "Last In, First Out" (LIFO) : 가장 나중에 추가된 데이터가 가장 먼저 제거되는 원리

 

ㆍ스택의 구성

  1. Push
    데이터를 스택에 추가하는 작업, data는 스택의 최상단에 추가
  2. Pop
    스택에서 데이터를 제거하는 작업, 가장 최근에 추가된 data가 제거
  3. Top
    스택의 최상단에 위치한 데이터, 이는 가장 최근에 추가된 데이터를 가리키는 위치

ㆍArrayList로 Stack구현

import java.util.ArrayList;

public class StackActive {
    ArrayList arr;

    StackActive() {
        arr = new ArrayList();
    }

    public static void main(String[] args) {
        StackActive stack = new StackActive();
        stack.push(1);
        stack.push(10);
        stack.push(100);
        stack.push(1000);
        stack.push(10000);
        stack.printStack();

        System.out.println(stack.pop());
        System.out.println(stack.pop());
        System.out.println(stack.pop());


        System.out.println(stack.peek());
        stack.printStack();
    }

    private boolean isEmpty() {
        if (arr.size() == 0) {
            return true;
        }
        return false;
    }

    private void push(int data) {
        arr.add(data);
    }

    private Integer pop() {
        Integer value = null;

        if (arr.size() != 0) {
            value = (int)arr.remove(arr.size() - 1);
        }

        return value;
    }

    private Integer peek() {
        Integer value = null;

        if (arr.size() != 0) {
            value = (int)arr.get(arr.size() - 1);
        }

        return value;
    }

    private void printStack() {
        for (Object value : arr) {
            System.out.print((int)value + " ");
        }
        System.out.println();
    }
}

 

ㆍStack함수

  1. E push(E item)
    - 스택에 요소를 추가
  2. E pop()
    - 스택의 맨 위에 있는 요소를 제거하고 반환
  3. E peek()
    - 스택의 맨 위에 있는 요소를 반환, (제거 x)
  4. boolean empty()
    - 스택이 비어있는지 여부를 확인.
    - 비어 있으면 true를 반환하고, 그렇지 않으면 false를 반환.
  5. int search(Object o)
    - 스택에서 지정된 요소를 찾고, 요소의 위치를 반환
    - 스택의 맨 위에 있는 요소가 1의 위치, 그 아래로 순서대로 증가
    - 요소를 찾지 못하면 -1을 반환