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 |