프로그래밍/알고리즘

Stack(getMin)

프리월드 2017. 2. 24. 21:04


public class ListStack {

    private StackNode top//스택의 top

    public ListStack() {
        top null; //top 초기화(공백 상태의 스택
    }

    public void push(int item) {   //스택의 top에 자료 삽입
        if (isEmpty())
            top new StackNode(item);
        else {
            StackNode newNode = new StackNode(item);    //새 노드 생성
            if (newNode.min top.min)
                newNode.min top.min;
            newNode.nextLink top//새 노드가 top이 가리키던 노드를 가리키도록 함
            top = newNode//top이 새 노드를 가리키도록 변경
        }
    }

    public int pop() {
        int value = peek();
        top top.nextLink;
        return value;
    }

    public int peek() {
        return top.value;
    }

    public int getMin() {
        return top.min;
    }

    public boolean isEmpty() {
        return (top == null);
    }

    class StackNode {

        public StackNode nextLink//리스트 상의 다음 연결
        public int value//리스트 상의 자료
        public int min;    //min value

        public StackNode(int value) {
            this.value = value//새 노드에 자료 저장
            nextLink null;
            this.min = value;
        }
    }
}

'프로그래밍 > 알고리즘' 카테고리의 다른 글

binarySearch  (0) 2017.02.24
Stack(TwoStack)  (0) 2017.02.24
문자열 rotate 체크  (0) 2017.02.24
문자열 치환  (0) 2017.02.24
mergeSort  (0) 2017.02.24