数据结构——顺序栈

时间:2022-08-25 10:28:46

数据结构——顺序栈

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

接口类

//未使用泛型的栈接口类
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("输入的字符串不是回文串 ");
}
}