数据结构之stack 实例

stack的理解就不多哔哔了,网上很多优秀的文章。

第一步,封装stack 类

public class Stack {
	private int size;
	private int top;
	private char[] stackArr;

	public Stack(int size) {
		stackArr = new char[size];
		top = -1;
		this.size = size;

	}

	public void push(char elem) {
		stackArr[++top] = elem;

	}

	public char pop() {
		return stackArr[top--];

	}

	// 查看
	public char peek() {
		return stackArr[top];
	}

	// 判空
	public boolean isEmpty() {
		return top == -1;

	}

	// 判满
	public boolean isFull() {
		return top == (size - 1);
	}

}



// 测试类
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class BrecketChecker {
	private String input;

	public BrecketChecker(String in) {
		this.input = in;

	}

	public void check() {
		int strLength = input.length();
		Stack stack = new Stack(strLength);

		for (int i = 0; i < strLength; i++) {
			char ch = input.charAt(i);
			switch (ch) {
			case '{':
			case '[':
			case '(':
				stack.push(ch);
				break;
			case '}':
			case ']':
			case ')':
				if (!stack.isEmpty()) {
					char chx = stack.peek();

					if ((chx == '{' & ch == '}') || (chx == '(' & ch == ')')
							|| (chx == '[' & ch == ']')) {
						System.out.println("匹配完成!字符:" + ch + ",下标:" + i);
						stack.pop();
					}
				} else {
					System.out.println("匹配出错!字符:" + ch + ",下标:" + i);
				}

			default:
				break;
			}

		}
		if (!stack.isEmpty()) {
			// 匹配结束时如果栈中还有元素,证明右分隔符缺失
			System.out.println("有括号没有关闭!");
		}
	}

	public static void main(String[] args) {

		System.out.println("输入需要检测的字符串:");
		String str = getString();
		BrecketChecker checker = new BrecketChecker(str);
		checker.check();
	}

	public static String getString() {
		String str = "";
		try {
			InputStreamReader reader = new InputStreamReader(System.in);
			BufferedReader bReader = new BufferedReader(reader);
			str = bReader.readLine();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return str;
	}

}

第二部实验/测试

参考文章

https://blog.csdn.net/engerla/article/details/79103123

猜你喜欢

转载自blog.csdn.net/xiaohanguo_xiao/article/details/82830762