小米-基础算法-手写栈结构
2019-01-28 本文已影响0人
luweicheng24
实现一个栈,可以使用除了栈之外的数据结构
eg:
输入:
push(1)
pop()
push(2)
top() // return 2
pop()
isEmpty() // return true
push(3)
isEmpty() // return false
个人实现:
public class Stack {
private int initCapacity = 8;
private Integer top = null;
private int curIndex = 0;
private Integer[] stack = new Integer[initCapacity];
/*
* @param x: An integer
* @return: nothing
*/
public void push(int t) {
// write your code here
int length = stack.length;
if (curIndex == length) {
resizeCapacity();
}
top = t;
stack[curIndex++] = t;
}
// 扩容
private void resizeCapacity() {
int length = stack.length;
if (length >= Integer.MAX_VALUE) {
throw new RuntimeException("the stack max empty is" + Integer.MAX_VALUE);
}
Integer[] newStack = new Integer[length << 1];
System.arraycopy(stack, 0, newStack, curIndex-1, length);
stack = newStack;
}
/*
* @return: nothing
*/
public void pop() {
// write your code here
if(top==null){
return;
}
stack[--curIndex]=null;
if(curIndex==0){
top = null;
}else{
top = stack[curIndex-1];
}
}
/*
* @return: An integer
*/
public int top() {
// write your code here
return top;
}
/*
* @return: True if the stack is empty
*/
public boolean isEmpty() {
// write your code here
return top == null;
}
}