栈接口的定义

public interface stack {//栈的抽象接口定义
    void push(Object obj);//向栈顶插入新元素
    Object pop();//栈中删除元素并返回
    Object peek();//返回栈顶的元素
    boolean isEmpty();//判断是否为空
    void clear();//清空栈中的元素
}

初始化顺序栈为空

public sequenceStack(){
        top=-1;//栈的初始为空,置top为-1
        stackArray=new Object[maxSize];//数组初始长度为10
    }
    public sequenceStack(int n){
        if(n<=0){
            System.out.println("数组长度要大于0,否则退出程序");
            System.exit(1);
        }
        top=-1;
        stackArray=new Object[n];//给数组长度为n的存储空间
    }

向栈顶插入元素

public void push(Object obj) {//向栈顶插入元素
        if(top==stackArray.length-1){//对数组空间用完情况进行再分配
            Object[] p=new Object[top*2+2];//新数组空间变为原来的2倍
            for(int i=0;i<=top;i++){
                p[i]=stackArray[i];
            }
            stackArray=p;//把p指向的空间给stackArray
        }
        top++;//栈顶指针加1表示进栈
        stackArray[top]=obj;//将新元素插入到栈顶

    }

删除栈顶元素并返回

public Object pop() {
        if(top==-1){//对栈为空时处理情况
            System.out.println("数据栈已空,无法删除元素");
            return null;
        }
        top--;//表示退栈
        return stackArray[top+1];//返回栈顶元素的值
    }

读取栈顶元素的值

 public Object peek() {
        if(top==-1){//空栈处理
            System.out.println("数据栈已空,无法删除元素");
            return null;
        }
        return stackArray[top];//返回栈顶元素的值
    }

判断栈是否为空和清空所有元素使之为空栈

@Override
    public boolean isEmpty() {//判断时否为空,如果为空返回ture,否则返回false
        return top==-1;
    }

    @Override
    public void clear() {//清除栈中所有元素
        top=-1;
    }

测试方法

public class stackTest {
    public static void main(String[] args) {
        stack sck=new sequenceStack();//定义并创建空栈
        int []a=new int[]{3,8,5,17,9,30,15,22};
        for(int i=0;i<a.length;i++){
            sck.push(a[i]);//数组进栈
        }
        System.out.println(sck.pop()+","+sck.pop()+","+sck.pop());
        sck.push(68);
        System.out.println(sck.peek()+","+sck.pop()+","+sck.pop());
        while(!sck.isEmpty()){
            System.out.print(sck.pop()+" ");
        }
        System.out.println();
        sck.clear();
    }
}

你们最喜欢的全部代码来了

import java.util.Scanner;

public class sequenceStack implements stack{
    final  int maxSize=10;//假定存储栈的一维数组初始长度为10
    private Object[]stackArray;//定义存储栈的数组引用
    private int top;//定义数组中所保存栈的栈顶元素的下标位置
    public sequenceStack(){
        top=-1;//栈的初始为空,置top为-1
        stackArray=new Object[maxSize];//数组初始长度为10
    }
    public sequenceStack(int n){
        if(n<=0){
            System.out.println("数组长度要大于0,否则退出程序");
            System.exit(1);
        }
        top=-1;
        stackArray=new Object[n];//给数组长度为n的存储空间
    }
    @Override
    public void push(Object obj) {//向栈顶插入元素
        if(top==stackArray.length-1){//对数组空间用完情况进行再分配
            Object[] p=new Object[top*2+2];//新数组空间变为原来的2倍
            for(int i=0;i<=top;i++){
                p[i]=stackArray[i];
            }
            stackArray=p;//把p指向的空间给stackArray
        }
        top++;//栈顶指针加1表示进栈
        stackArray[top]=obj;//将新元素插入到栈顶

    }

    @Override
    public Object pop() {
        if(top==-1){//对栈为空时处理情况
            System.out.println("数据栈已空,无法删除元素");
            return null;
        }
        top--;//表示退栈
        return stackArray[top+1];//返回栈顶元素的值
    }

    @Override
    public Object peek() {
        if(top==-1){//空栈处理
            System.out.println("数据栈已空,无法删除元素");
            return null;
        }
        return stackArray[top];//返回栈顶元素的值
    }

    @Override
    public boolean isEmpty() {//判断时否为空,如果为空返回ture,否则返回false
        return top==-1;
    }

    @Override
    public void clear() {//清除栈中所有元素
        top=-1;
    }
}