数据结构——顺序栈

程序员.jpg

本篇文章主要是用做代码分享。代码,注释都写得很清楚,不清楚的可以问我,如果有些不对的地方也可以提出来,以便我及时改正。

接口类

//未使用泛型的栈接口类
public interface ISeqStack {
    boolean isEmpty();  //判空
    boolean isFull();   //判满
    boolean push(Object element);   //入栈
    Object pop();   //出栈
    Object peek();  //查看栈顶元素
    void display(); //遍历输出
}

顺序栈类

//顺序栈类
public class SeqStack implements ISeqStack {
    private Object data[];  //存储栈的数据元素
    private int top = -1;   //top为栈顶元素下标,默认值是-1,指向栈顶元素

    //构造指定容量的空栈
    public SeqStack(int capacity) {
        this.data = new Object[Math.abs(capacity)];
    }
    //默认给50个容量
    public SeqStack() {
        this(50);
    }

    @Override
    public boolean isEmpty() {
        // 判空
        return top == -1;
    }

    @Override
    public boolean isFull() {
        // 判满
        return top == data.length-1;
    }

    @Override
    public boolean push(Object element) {
        // 入栈
        if(isFull() || element == null)
            return false;
        top++;
        data[top] = element;
        return true;
    }

    @Override
    public Object pop() {
        // 出栈,弹出栈顶元素
        if(isEmpty())
            return null;
        else
            return data[top--];
    }

    @Override
    public Object peek() {
        // 查看栈顶元素,不移动栈顶指针
        if(isEmpty())
            return null;
        else
            return data[top];
    }

    @Override
    public void display() {
        // 遍历输出
        for(int i = 0; i <= top; i++)
            System.out.print(data[i].toString() + " ");
        System.out.println();
    }   
}

测试类

import java.util.*;
//测试顺序栈,判断回文串
public class TestSeqStack01 {
    public static void main(String[] args){
        SeqStack stack = new SeqStack(20);

        Scanner input = new Scanner(System.in);
        System.out.println("输入一串字母或数字,判断是否是回文串:");
        String element = input.next();
        for(int i = 0; i < element.length(); i++){
            stack.push(element.charAt(i));
        }

        String temp = "";
        while(!stack.isEmpty()) {
            temp += stack.pop() + "";
        }
        System.out.println(temp);
        if(element.equals(temp))
            System.out.println("输入的字符串是回文串 ");
        else
            System.out.println("输入的字符串不是回文串 ");
    }
}

猜你喜欢

转载自blog.csdn.net/qq_36851515/article/details/76428102
今日推荐