スタックは、「最後で、最初のうち」データ構造アルゴリズム、スタック機能は、最後のアウトでの実装です。
私たちは、スタックデータ構造を実装するためのリストコレクションでJavaを使用しています。
パッケージ com.prolog.api.webservicetest; / * * @auther顶风少年 * @mail [email protected] * @date 2020年1月2日午前11時41 * @notify * @version 1.0 * / インポートjava.util.ArrayListの。 輸入java.util.Arrays。 輸入はjava.util.List; パブリック クラススタック{ プライベートのArrayList <文字列> stackList = 新しい ArrayListを<> (); // 添加元素到栈顶 公共 無効アドオン(文字列...整数){ リスト <文字列> integers1 = は、Arrays.asList(整数)。 stackList.addAll(integers1)。 } // トップ要素をポップ パブリック文字列ポップアップを(){ IF(stackList.size()== 0 ){ リターン "-1" ; } 戻り stackList.remove(stackList.size() - 1 ); } // 戻り値上部要素ではなく、ポップ パブリックストリングgetTop(){ IF(stackList.size()== 0 ){ リターン "-1" ; } 戻り stackList.get(stackList.sizeを() - 1 ); } // 分析スタックこれは、nullである パブリック ブールのisEmpty(){ リターン stackList.isEmptyを(); } //は、スタック内の要素の数を返し パブリック整数のgetSize()を{ リターンstackList.size(); } // 空のスタック 公共 ボイドclearStack(){ stackList.clear(); } }
それ以外の場合は、例外がスローされます、ポップ、そしてトップの要素を取得するとき、スタック内の要素があるかどうかを決定する必要がある、ということに注意してください。
アプリケーションのスタック
図1は、文字列から文字がペアに表示されるかどうかを判断します。
// シナリオ:ブラケットがペアで表示される必要がありましょう。スタックで互いに相殺 @Test 公共 ボイド)(T1 スロー例外{ スタックスタック = 新しい新しいスタック(); 文字列STR = "(A + B)*(AC)" ; // ループストリング のための(INT I; I = 0 <str.length(); I ++ ){ // 文字列の各要素を取得 する文字列をS = String.valueOf(str.charAt(I)); IF(s.equals( "(")){ // もしである(プッシュ stack.add(S); } そう IF(s.equals( ")")){// それが現在の要素のスタックかどうかが決定される)場合には、問題がない場合 IF (stack.isEmpty()){ するSystem.out.println( "無効な文字列" ); リターン; } 他 { // 現在のスタックの要素のみ(その後、ポップであってもよいがあり ; stack.popup() } } } のSystem.out.println(「法定文字列」); }