顺序栈接口定义
在创建新类时选择接口创建Stack接口
package p1.接口;
public interface Stack<E> extends Iterable<E> {
public int size();
public boolean isEmpty();
public void push(E element);
public E pop();
public E peek(); //查看栈顶元素
public void clear();
}
顺序栈的实现
顺序栈ArrayStack调用顺序表ArrarList类的变量list作为成员变量,并调用list中的方法实现顺序栈的方法
package p2.线性结构;
import p1.接口.Stack;
import java.util.Iterator;
public class ArrayStack<E> implements Stack<E> {
private ArrarList<E> list;//ArrarList作为ArrayStack的成员变量
public ArrayStack(){
list = new ArrarList<>();
}
public ArrayStack(int capacity){
list = new ArrarList<>(capacity);
}
@Override
public int size() {
return list.size();
}
@Override
public boolean isEmpty() {
return list.isEmpty();
}
@Override
public void push(E element) {
list.add(element);
}
@Override
public E pop() {
return list.remove(list.size()-1);
}
@Override
public E peek() {
return list.get(list.size()-1);
}
@Override
public void clear() {
list.clear();
}
@Override
public Iterator<E> iterator() {
return list.iterator();
}
@Override
public String toString(){
return list.toString();
}
@Override
public boolean equals(Object o){
if (o == null){
return false;
}
if (this == o){
return true;
}
if (o instanceof ArrayStack){
ArrayStack other = (ArrayStack)o;
return this.list.equals(other.list);
}
return false;
}
}
顺序栈的测试
样例及结果:
测试代码:
package p0.测试;
import p2.线性结构.ArrayStack;
public class TestArrayStack {
public static void main(String[] args) {
ArrayStack<Integer> stack01 = new ArrayStack<>();
ArrayStack<Integer> stack02 = new ArrayStack<>(15);
for (int i = 1;i <= 12;i++){
stack01.push(i);
stack02.push(i);
}
System.out.println(stack01);
System.out.println(stack02);
System.out.println(stack01.equals(stack02));
System.out.println(stack01.pop());
System.out.println(stack01);
System.out.println(stack01.peek());
}
}