目录
-
栈的方法接口
package com.suanfa.stack;
/**
* 栈的方法接口
* @author Administrator
*
*/
public interface Stack<E> {
/**
* 查询栈的大小
* @return
*/
int getSize();
/**
* 判断栈是否为空
* @return
*/
boolean isEmpty();
/**
* 入栈
* @param e
*/
void push(E e);
/**
* 出栈
* @return
*/
E poop();
/**
* 查看栈顶元素
* @return
*/
E peek();
}
-
基于数组实现的栈(后进先出)
package com.suanfa.stack;
import com.suanfa.array.DongTaifFunXingArray;
/**
* 基于数组实现的栈(后进先出)
* @author Administrator
*
* @param <E>
*/
public class ArrayStack<E> implements Stack<E>{
//利用前面的自定义数组
DongTaifFunXingArray<E> dongTaifFunXingArray;
public ArrayStack(int capacity){
dongTaifFunXingArray=new DongTaifFunXingArray<E>(capacity);
}
public ArrayStack(){
dongTaifFunXingArray=new DongTaifFunXingArray<E>();
}
public int getSize() {
return dongTaifFunXingArray.getSize();
}
/**
* 获取容积
* @return
*/
public int getCapacity(){
return dongTaifFunXingArray.getCapacity();
}
/**
* 判断是否为空
*/
public boolean isEmpty() {
return dongTaifFunXingArray.isEmpty();
}
/**
* 入栈
*/
public void push(E e) {
dongTaifFunXingArray.addLast(e);
}
/**
* 出栈
*/
public E poop() {
return dongTaifFunXingArray.removeLast();
}
/**
* 查看栈顶元素
*/
public E peek() {
return dongTaifFunXingArray.getLast();
}
@Override
public String toString(){
StringBuilder res = new StringBuilder();
res.append("Stack: ");
res.append('[');
for(int i = 0 ; i < dongTaifFunXingArray.getSize() ; i ++){
res.append(dongTaifFunXingArray.get(i));
if(i != dongTaifFunXingArray.getSize() - 1)
res.append(", ");
}
res.append("] top");
return res.toString();
}
}
-
用栈实现括号匹配()【】{}
package com.suanfa.stack;
import java.util.Stack;
/**
* 利用栈的知识进行括号匹配:(){}【】,({【】})都算是有效匹配
* @author Administrator
*
*/
public class TestStack1 {
public boolean isValid(String s){
//创建一个栈
Stack<Character>stack=new Stack<Character>();
for(int i=0;i<s.length();i++){
//遍历字符串中的每个字符
char c=s.charAt(i);
if(c=='(' || c=='{' || c=='[')
stack.push(c);
else {
if(stack.isEmpty())
return false;
char topChar =stack.pop();//栈顶元素出栈
if(c==')' && topChar!='(')
return false;
if(c==']' && topChar!='[')
return false;
if(c=='}' && topChar!='{')
return false;
}
}
return stack.isEmpty();
}
public static void main(String[] args) {
System.out.println((new TestStack1()).isValid("()[]{}"));
System.out.println((new TestStack1()).isValid("([)]"));
}
}