public class MyStack {
private int size;
private int top;
private int[] stackArray;
//构造函数
public MyStack(int size) {
stackArray = new int[size];
top = -1;
this.size = size;
}
//进栈
public void push(int elem) {
stackArray [++top] = elem;
}
//出栈
public int pop () {
int elem = stackArray[top];
stackArray [top--] = 0;
return elem;
}
//获取栈顶元素
public int peak() {
return stackArray[top];
}
//判空
public boolean isEmpty(){
return top == -1;
}
//判满
public boolean isFull(){
return top == size - 1;
}
}
栈的运用,判断符号是否闭合
public static void checkStack(String checkedStr){
CheckStack stack = new CheckStack(checkedStr.length());
for (int i = 0;i<checkedStr.length();i++) {
char ch = checkedStr.charAt(i);
switch (ch) {
case '{' :
case '[' :
case '(' :
stack.push(ch);
break;
case '}' :
case ']' :
case ')' :
if (!stack.isEmpty()) {
char chx = stack.pop();
if (
(ch == '}' && chx != '{') || (ch == ']' && chx != '[') || (ch == ')' && chx != '(')
) {
System.out.println("匹配出错!字符"+ch+",下标:"+i);
}
} else {
System.out.println("匹配出错!字符"+ch+",下标:"+i);
}
default:
break;
}
}
if (!stack.isEmpty()) {
System.out.println("有括号没有关闭");
}
}
栈(先进后出)public class MyStack { private int size; private int top; private int[] stackArray; //构造函数 public MyStack(int size) { stackArray = new int[size]; top = -1;...