zoukankan      html  css  js  c++  java
  • java:数据结构复习(二)数组栈

    
    
    import java.util.Arrays;
    import java.util.Scanner;

    /**
    * @author 李正阳
    */
    public class MyArraysStack<E> implements MyStack<E> {
    private int DEFAULT_SIZE = 16;//定义栈的初始默认长度
    private int capacity;//保存顺序栈的长度涉及扩容
    public int size;//保存顺序栈中元素的个数
    private Object[] elementData;//定义一个数组用于保存顺序栈中的元素


    /**
    * 初始化栈
    */
    public MyArraysStack() {
    elementData = new Object[DEFAULT_SIZE];
    size = 0;
    capacity = DEFAULT_SIZE;
    }

    /**
    * 清除栈中所有的元素
    *
    * @return
    */
    @Override
    public boolean clearStack() {
    for (int i = 0; i < size; i++) {
    elementData[i] = null;
    }
    return true;
    }

    /**
    * 栈是否为空
    *
    * @return true 空栈 false 非空栈
    */
    @Override
    public boolean isEmpty() {
    if (size == 0) {
    return true;
    } else {
    return false;
    }
    }

    /**
    * 返回这个数组的长度
    *
    * @return
    */
    @Override
    public int getLengh() {
    return size;
    }

    /**
    * 获得栈顶元素
    *
    * @return
    */
    @Override
    public E getTop() {
    return (E) elementData[size - 1];
    }

    /**
    * 压入元素
    *
    * @param p 存储的值
    * @return true 压入元素成功 false 失败
    */
    @Override
    public boolean push(Object p) {
    if (size >= capacity) {
    reclloc();
    elementData[size] = p;
    size++;
    } else {
    elementData[size] = p;
    size++;

    }
    return true;
    }

    /**
    * 扩容数组
    */
    @Override
    public void reclloc() {
    elementData = Arrays.copyOf(elementData, 2 * DEFAULT_SIZE);
    capacity = 2 * DEFAULT_SIZE;
    }

    /**
    * 弹出栈中的元素
    *
    * @return 所弹出的元素
    */
    @Override
    public E pop() {

    return (E) elementData[--size ];
    }

    /**
    * 遍历并且输出
    */
    @Override
    public void stackTraverse() {
    for (Object a : elementData) {
    System.out.println(a + " ");
    }
    }
    }

     栈的接口:

    
    
    public interface MyStack<E> {
    //清空栈
    boolean clearStack();
    //判断是否为空栈
    boolean isEmpty();
    //返回栈中的元素个数
    int getLengh();
    //返回栈的栈顶元素
    E getTop();
    //入栈
    public boolean push(Object p);
    //出栈
    public E pop() ;
    //编历栈
    void stackTraverse();
    //扩容数组
    default void reclloc(){};
    //进制转换
    default String systemTransformation(String n,int n1,int n2) {
    return "error";
    }
    //表达式求值
    default boolean expressionEvaluation(String n){
    return false;
    }
    //判断运算符优先级
    default char precede(char a,char b){
    return '#';
    }
    //括号匹配
    default boolean correct(String n){
    return true;
    }
    //回文判断
    default boolean isPalindrome(String n){
    return false;
    }
    }
     
  • 相关阅读:
    vue系列——数据请求
    优化记录
    优化记录
    正则
    跨域问题
    原型链之prototype/__proto__/constructor
    vue系列——组件数据通讯(二)
    vue系列——组件数据通讯(一)
    ES6(一)
    ES5总结
  • 原文地址:https://www.cnblogs.com/lzy321/p/10387642.html
Copyright © 2011-2022 走看看