package com.java.datastructure.stact;
//java顺序栈实现
public class LinearStact {
private int top = -1;
private final static int defSize = 2;
private String[] data = new String [defSize];
//添加元素
public boolean push(String pData) {
//判断是否栈满
if(top+1 >=data.length) {
//增加容量
resize();
}
++top;
data[top] = pData;
return true;
}
//取出元素
public String pop() {
//判断是否栈满
if(isEmpt()) {
return null;
}
String temp = data[top];
data[top] = null;
top--;
return temp;
}
//删除元素
public boolean del() {
if(isEmpt()) {
return false;
}
data[top] = null;
top--;
return true;
}
//获取栈顶元素
public String peek() {
if(isEmpt()) {
return null;
} else {
return data[top];
}
}
//查找元素
public int search(String content) {
int index = -1;
for (int i=0; i<length(); i++) {
if(data[i].equals(content)) {
index = i;
break;
}
}
return index;
}
public void resize() {
String[] dataTemp = new String [data.length*2];
for (int i=0; i<data.length; i++) {
dataTemp [i] = data[i];
data[i] = null;
}
data = dataTemp;
dataTemp = null;
}
//判断是否为空
public boolean isEmpt() {
return top==-1;
}
//获取栈宽度
public int length() {
return top+1;
}
//清除
public void clean() {
for (int i=0; i<data.length; i++) {
data[i] = null;
}
top = -1;
}
public void display() {
for (int i=0; i<top+1; i++) {
System.out.println("打印每个元素"+data[i]);
}
}
public static void main(String[] args) {
LinearStact stact = new LinearStact();
String content = "isNull ";
System.out.println(content+"判断是否为空 "+stact.isEmpt());
System.out.println(content+"获取栈顶元素 "+stact.pop());
System.out.println(content+"获取元素个数 "+stact.length());
System.out.println(content+"获取栈顶-peak元素 "+stact.peek());
System.out.println(content+"获取查找stactA元素 "+stact.search("stactA"));
stact.push("stactA");
stact.push("stactB");
stact.push("stactC");
//打印
stact.display();
content = "notNull ";
System.out.println(content+"判断是否为空 "+stact.isEmpt());
System.out.println(content+"获取元素个数 "+stact.length());
System.out.println(content+"获取栈顶-peak元素 "+stact.peek());
System.out.println(content+"获取栈顶查找stactC元素 "+stact.search("stactC"));
System.out.println(content+"获取栈顶元素 "+stact.pop());
}
}