Skip to content

Instantly share code, notes, and snippets.

@devetude
Created June 10, 2017 08:52
Show Gist options
  • Save devetude/67e3b7659912c7b1a6395624fb834779 to your computer and use it in GitHub Desktop.
Save devetude/67e3b7659912c7b1a6395624fb834779 to your computer and use it in GitHub Desktop.
스택 (Stack)
/**
* 스택 (Stack)
*
* @author devetude
*/
public class Main {
/**
* 메인 메소드
*
* @param args
*/
public static void main(String args[]) {
// 스택 객체 변수 초기화
Stack stack = new Stack();
// 4, 5, 6을 순차적으로 추가 후 결과 및 크기 출력
stack.push(4);
stack.push(5);
stack.push(6);
System.out.println(stack.toString());
System.out.println(stack.size());
// 가장 위에 있는 요소를 출력 후 빼낸 후 출력
System.out.println(stack.peek());
System.out.println(stack.pop());
}
/**
* 스택 이너 클래스
*
* @author devetude
*/
public static class Stack {
private static final int STACK_SIZE = 100;
private Object[] stack = new Object[STACK_SIZE];
private int topPointer = -1;
/**
* 푸시 메소드
*
* @param data
* @return
*/
public boolean push(Object data) {
int pushPointer = topPointer + 1;
if (pushPointer < STACK_SIZE) {
stack[pushPointer] = data;
topPointer++;
return true;
}
return false;
}
/**
* 팝 메소드
*
* @return
*/
public Object pop() {
if (size() == 0) {
return null;
}
Object topData = stack[topPointer];
topPointer--;
return topData;
}
/**
* 크기를 가져오는 메소드
*
* @return
*/
public int size() {
return this.topPointer + 1;
}
/**
* 가장 위에 있는 요소를 가져오는 메소드
*
* @return
*/
public Object peek() {
if (size() == 0) {
return null;
}
return stack[topPointer];
}
/**
* 결과 출력 메소드
*/
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("[ ");
for (int i = 0; i < topPointer; i++) {
sb.append(stack[i]).append(", ");
}
sb.append(stack[topPointer]).append(" ]");
return sb.toString();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment