最近、データ構造を確認し、自分でスタックを実装しました。スタックは、1つの位置のみの挿入と削除を制限するテーブルの一種です。最も基本的な操作はスタックの内外であるため、「First In and Out」テーブルとも呼ばれます。
まず、スタックの概念を理解しましょう。
スタックは、テーブルヘッダーでのみ挿入操作と削除操作を制限する線形テーブルです。 LIFOとも呼ばれることもあります(最新のファーストアウトテーブル)。この概念を理解するには、まず「スタック」の元の意味を理解して、本質を把握できるようにする必要があります。
「スタック」とは、商品が保管されているか、乗客を倉庫または輸送ステーションに拡張できる場所を意味します。したがって、データが一時的に保存されている場所を指すコンピューターフィールドに導入されるため、スタックに入り、スタックを出るということわざがあります。
実装方法は次のとおりです。最初にインターフェイスを定義し、次にこのインターフェイスを介して線形スタックとチェーンスタックを実装します。次のように、コードは比較的単純です。
パッケージcom.peter.java.dsa.interfaces;/***スタック操作定義** @author peter pan*/public interface stack <t> {/* query empty*/boolean isempty();/* clear stack*/void clear();/* bull stack*/t pop();/* intc*/boolean push(int of stack() length();/*スタックの上部にある要素を表示しますが、それを削除しないでください*/t peek();/*スタックのオブジェクトの位置を返します*/int検索(tデータ);}線形スタック:配列に実装されています。
パッケージcom.peter.java.dsa.common; Import com.peter.java.dsa.interfaces.stack;/** * Linear Stack * * @author peter pan */public class linearstack <t>スタック<t> {@suppresswarnings( "un -suppresswarnings(" un -suppresswarnings)private t = private t = in suppresswarnings( "] supresswarnings("] new [] 0; @Override public boolean isempty(){// todo auto-feenated method stubreturn size == 0;}@override public void clear(){// todo auto-enerated method stubfor(int i = 0; i <t.length; i ++){t [i] = null;} size = 0;} size = 0;} size = 0;自動生成メソッドスタッキ(size == 0){return null;} t tmp = t [size-1]; t [size-1] = null; size - ; return tmp;}@override public boolean push(t data){// todo auto-generated method stubif(size> = t.length){restize();}; true;}@override public int length(){// todo auto -fenated method stubturn size;}@override public t peek(){// todo auto -fenerated method stubif(size == 0){return null;} todo auto feenated method stubint index = -1; 0; i <t.length; tmp [i] = t [i] = null;} tmp = null;}/ * stringbuffer(); buffer.append( "線形スタックコンテンツ:["); 1、 ""); return buffer.toString();}}チェーンスタック:単一のリンクリストを介して実装されています。
パッケージcom.peter.java.dsa.common; Import com.peter.java.dsa.interfaces.stack; public class linkedstack <t> stack <t> {private node top; private int size; @override public boolean isempty(){// todo aut aut-genated method method tod tod = = = = = = = = = = = = = = = = =自動生成メソッドStubtop = null; size = 0;}@override public t pop(){// todo auto-generated method stubt topvalue = null; if(top!= null){top!= null){top! push(t data){// todo auto-fenated methood stubnode oldtop = top; top = new node(data); top.prev = oldtop; size ++;} return true;}@override public length(){// todo auto-generated method stubreturn subturn size;}@override peek() (top!= null){topvalue = top.data;} return topvalue;}@override public int search(t data){// todo auto -generated method stubint index = -1; node tmp = top; = tmp.prev;}} tmp = null; return index;}@override public string toString(){// todo auto -denerated method stubstringbuffer buffer = new Stringbuffer(); buffer.Append( "リンクされたスタックコンテンツ:[");ノードTMP = TOP; {buffer.append(tmp.tostring() + "、"); tmp = tmp.prev;} tmp = null; buffer.append( "]"); lastindexof( "、")、buffer.lastindexof( "、"); ");"); "); data; node prev; public node(t data){// todo auto-enerated constructor stubthis.data = data;}}}}学習はまだ進行中であり、コードは今後も更新され続けます。
これは、Java言語実装データ構造スタックコードのすべての詳細な説明です。すべての人に役立つことを願っています。興味のある友人は、このサイトの他の関連トピックを引き続き参照できます。欠点がある場合は、それを指摘するためにメッセージを残してください。このサイトへのご支援をありがとうございました!