java:数据结构复习(二)数组栈

时间:2023-08-26 22:21:32
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;
}
}