최대 1 분 소요

Stack 이란?

  • 후입선출 (Last-In-First-Out-LIFO)
  • 인터넷 브라우저 뒤로가기
  • Ctrl + z

  • 자바스크립트 콜스택 생각남
  • 데이터 들어오는 순서대로 a,b,c,d 가 들어오면
  • d,c,b,a 순으로 데이터 출력

push, pop, top, peek

public interface IStack<T> {  
    void push(T data);  
    T pop();  
    T peek();  
    int size();  
}
package stack;  
  
public class MyStack<T> implements IStack<T> {  
  
    private int size = 0;  
    private Node head = new Node();  
  

    @Override  
    public void push(T data) {  
        Node newNode = new Node();  
        newNode.data = data;  
        newNode.next = head.next;  
        head.next = newNode;  
        size++;  
    }  
  
    @Override  
    public T pop() {  
        if (isEmpty()) {  
            return null;  
        }  
        Node node = head.next;  
        head.next = node.next;  
        node.next = null; // 이 부분이 없어서 넣었는데
				        // 필요한건지 잘 모르겠음
        this.size--;  
        return node.data;  
    }  
  
    @Override  
    public T peek() {  
        if (isEmpty()) {  
            return null;  
        }  
        return head.next.data;  
    }  
  
    @Override  
    public int size() {  
        return this.size;  
    }  
  
    private boolean isEmpty() {  
        return this.size == 0;  
    }  
  
    private class Node {  
        Node next;  
        T data;  
    }  
}

댓글남기기