1。前に書いてください
データ構造のキューは、より馴染みのあるものでなければなりません。これはファーストアウトです。注文のため、それらはキューとして名前が付けられています。それはキューイングのようなものです。前面の端に新しいノードを挿入し、First.jdkコレクションフレームワークでノードを削除することもキューインターフェイスを提供します。このインターフェイスはキューを表します。シーケンシャルキュー:ArrayBlockingQueue、LinkedBlockingQueue。 (上記の2つは足色のキューです)、もう1つは同意します。
基礎となる実装は、2種類の複合リストで構成されています。配列の実装には欠点があり、これにより誤った膨満感が発生します。最初に、キューが空の場合、テールへの最初の参照変数の参照変数はヌルです。キュー要素が削除されると、フロント+1が発生し、後部は基礎となる配列の容量に等しくなります。シーケンシャルストレージ構造では、フロントは常にキュー内のキューから外に出ようとしている要素のインデックスを保存し、リアは常にキューに入力されようとしている要素のインデックスを保存します。キュー内の要素の数は後方にあります。シーケンシャルキューでは、基礎となるレイヤーは配列であるため、保存されたデータ要素は変更されず、2つの参照変数のみがリアとフロントが変更されます。
ここでチェーンストレージを使用してスペースを効果的に利用するために使用できるのは、参照変数が余分なスペースを占有することです。
キューの一般的な操作:
1:初期化
2:キューの長さを返します
3:要素を追加します
4:要素を削除します
5:ヘッダー要素にアクセスします
6:キューのペアテール要素にアクセスします
7:キューが空であるかどうかを判断します
8:キューをクリアします
2。カスタム実装
ソースコードディスプレイがクリアなので、紹介する必要はありません
パブリッククラスのLinkedQueue <T> {//カスタムチェーンキュー - チェーンキュープライベートクラスノードのデータノードを表すための非静的な内部クラス{//チェーンキュープライベートTデータのデータノードを示します; //次のノードプライベートノードへの参照。 @suppresswarnings( "unused")public node(){} public node(t data、node next){this.data = data; this.next = next; }} //チェーンキュープライベートノードフロントのヘッドとテールへの参照を定義します。プライベートノードリア; //チェーンスタックプライベートINTサイズのサイズを定義します。 //空のチェーンからコラムへのpublic linkedqueue(){front = null;リア= null;} //特定の要素を持つチェーンペア列を作成し、1つのノードのパブリックリンクケイエ(t element){front = new node(element、null); //同じ要素をポイントリア=フロント;サイズ++;} elementFront(){if(!empty()){return front.data;} else {return null; }} // Queue public t elementRear(){if(!empty()){return recor.data; } else {return null; }} //現在のチェーンペアキューが空であるかどうかを返しますパブリックブール空() } //チェーンキューをクリアパブリックvoid clear(){front = null;リア= null; size = 0;} //チェーンキューにノードを挿入 - ペアpublic void add(t element){//チェーンペア列が空の場合、(front == null){recor = new Node(element、null); front = rear; } else {//新しいノードNode NewRear = new Node(element、null); rece.next = newRear; rece = newRear; } size ++;} //チェーンキューのノードを削除し、削除されたノードpublic t remove(){node oldfront = front; front = front.next; oldfront.next = null;サイズ - ; Oldfront.data;} // return coeue public string toString(){//チェーンキューが空のチェーンキューの場合は(empty()){return "[]"; } else {stringbuilder sbuilder = new StringBuilder( "["); for(node current = front; current!= null; current = current.next){sbuilder.append(current.data.tostring()+"、");} int len = sbuilder.length(); return sbuilder.delete(len-1、len).append( "]") lqueue.add( "aaa"); lqueue.add( "bbb"); lqueue.add( "ccc"); lqueue.add( "ddd"); system.out.println( "キューのヘッドノードの値を返す:"+lqueue.elementfront()); system.out.println( " Queue: "+lqueue.ElementRear()); System.out.println(lqueue.length()); system.out.println(lqueue);}}}実行結果:
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。