package com.test;
import java.lang.reflect.Array;
/**
* push 进栈,pop 出栈,peek 返回栈顶元素
*
* @author Administrator
*
* @param <T>
*/
public class GeneralArrayStack<T> {
private static final int DEFAULT_SIZE = 12;
private T[] mArray;
private int count;
public GeneralArrayStack(Class<T> type) {
this(type, DEFAULT_SIZE);
}
@SuppressWarnings("unchecked")
public GeneralArrayStack(Class<T> type, int size) {
mArray = (T[]) Array.newInstance(type, DEFAULT_SIZE);
count = 0;
}
public void push(T t) {
mArray[count++] = t;
}
public T peek() {
return mArray[count - 1];
}
public T pop() {
T t = mArray[count - 1];
count--;
return t;
}
public int size() {
return count;
}
// 返回栈是否为空
public boolean isEmpty() {
return size() == 0;
}
public void PrintArrayStack() {
if (isEmpty()) {
System.out.printf("stack is Empty\n");
}
System.out.printf("stack size()=%d\n", size());
int i = size() - 1;
while (i > 0) {
System.out.println(mArray[i]);
i--;
}
}
public static void main(String[] args) {
String temp;
GeneralArrayStack<Integer> stack = new GeneralArrayStack<Integer>(Integer.class);
stack.push(10);
stack.push(20);
stack.push(30);
// 将栈顶元素赋值给temp,并删除“栈顶元素”
temp = stack.pop().toString();
System.out.println("tmp=" + temp);
// 只将栈顶元素复制给temp,不删除该元素
temp = stack.peek().toString();
System.out.println("temp" + temp);
stack.PrintArrayStack();
}
}
java栈的实现
最新推荐文章于 2022-11-12 22:13:25 发布