栈是具有后进先出的特点,以下是栈的顺序实现,通过数组完成的。
public class ArrayStack<E> {
private E[] data = (E[]) new Object[10];
private int top = -1; //用来指示存到数组的哪个位置了
//判断栈是否为空
public boolean isEmpty() {
return top < 0;
}
//出栈操作,返回栈顶元素并删除
public E pop() {
if (isEmpty()) {
return null;
} else {
E temp = data[top];
top--;
return temp;
}
}
//返回栈顶元素但并不删除
public E peek() {
if (isEmpty()) {
return null;
} else {
return data[top];
}
}
//入栈操作
public void push(E target) {
//如果数组达到极限,建立新数组并拷贝原来的到新数组中,并使用新数组
if(top==data.length-1){
E[] tempdata=(E[])new Object[data.length+5];
int j=0;
for(int i=0;i<data.length;i++){
tempdata[j++]=data[i];
}
data=tempdata;
}
top = top + 1;
data[top] = target;
}
}
public class ArrayStack<E> {
private E[] data = (E[]) new Object[10];
private int top = -1; //用来指示存到数组的哪个位置了
//判断栈是否为空
public boolean isEmpty() {
return top < 0;
}
//出栈操作,返回栈顶元素并删除
public E pop() {
if (isEmpty()) {
return null;
} else {
E temp = data[top];
top--;
return temp;
}
}
//返回栈顶元素但并不删除
public E peek() {
if (isEmpty()) {
return null;
} else {
return data[top];
}
}
//入栈操作
public void push(E target) {
//如果数组达到极限,建立新数组并拷贝原来的到新数组中,并使用新数组
if(top==data.length-1){
E[] tempdata=(E[])new Object[data.length+5];
int j=0;
for(int i=0;i<data.length;i++){
tempdata[j++]=data[i];
}
data=tempdata;
}
top = top + 1;
data[top] = target;
}
}