Created
June 10, 2017 08:52
-
-
Save devetude/67e3b7659912c7b1a6395624fb834779 to your computer and use it in GitHub Desktop.
스택 (Stack)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* 스택 (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