データ構造2_java---スタック、括弧マッチング
12389 ワード
1 package Main;
2
3
4 import java.util.Scanner;
5
6 import javax.swing.text.html.HTMLDocument.HTMLReader.IsindexAction;
7
8 /* */
9 public class Main{
10 public int maxsize;
11 public int top;
12 private Object[] stackelem;
13 //
14 public Main(int maxstack)
15 {
16 top = 0;
17 this.maxsize = maxstack;
18 stackelem = new Object[maxstack];
19 }
20 //
21 public void clear()
22 {
23 top = 0;
24 }
25 //
26 public boolean isEmpty()
27 {
28 if(top==0)
29 return true;
30 return false;
31 }
32 //
33 public void push(Object x) throws Exception
34 {
35 if(top==maxsize)
36 throw new Exception("the stack is enough");
37 stackelem[top] = x;
38 top++;
39 }
40 //
41 public void print() {
42 for(int i=top-1;i>=0;i--)
43 {
44 System.out.println(stackelem[i]);
45 }
46 }
47 //
48 public Object pop() throws Exception
49 {
50 if(isEmpty())
51 throw new Exception("the stack is empty!");
52 top--;
53 return stackelem[top];
54 }
55 public static void main(String[] args) throws Exception {
56 Main aStack = new Main(100);
57 Scanner aScanner = new Scanner(System.in);
58 String aString = aScanner.nextLine();
59 char []a = new char[aString.length()];
60 a = aString.toCharArray();
61 Main bStack = new Main(100);
62 for(int i=0;i)
63 {
64 aStack.push(a[i]);
65 }
66 int flag=1;
67 char pop;
68 for(int i=0;i)
69 {
70 pop = (char) aStack.pop();
71 if(pop==')')
72 {
73 bStack.push(pop);
74 }else if(pop=='('&&bStack.isEmpty()){
75 flag = 0;
76
77 }else if(pop=='(')
78 {
79 bStack.pop();
80 }
81 }
82 if (bStack.isEmpty()&&flag==1) {
83 System.out.println("The String is right!");
84 }else {
85 System.out.println("the string is wrong!");
86 }
87 aStack.print();
88
89
90 }
91 }
javaを使用してスタックの動作を実現し、括弧マッチングを加えてアプリケーションを実現する.括弧のマッチング:
(1)入力したすべての文字列をスタックに押し込む
(2)順次取り出し、「」に出会うと、それを新築の中に押し込む.
(3)「(」に出会うと、それと一致するものを新しいスタックから取り出し、最後のスタックが空かどうかを判断する.
(4)注意したいのは、1番目の括弧が反対の場合、判定のためにフラグビットフラグを設定することです.