データ構造の深い理解

 

ブリーフ

  データ構造は、私たちは効果的にアクセス、変更データをことができ、データの格納に編成されています。スタック、キューはコンピュータ第一のデータ構造で定義されています。LIFOスタック(固定端、他端浮動)である、キューはFIFOのデータ格納形式及び組織です。

コード

スタックコード

リスト= []#は空のスタックを定義し、それはメトロ(地下鉄その一方のみアクセスドア)として理解することができます

 

lists.append(「」)#スタックは、データを追加するために、それが最新のエントリが最後の頭を認識するためにプッシュされます地下鉄に絞るために、人として理解することができます

lists.append( 'B')

lists.append( 'F')

lists.append(G '')

 

last_out = lists.pop()(地下鉄にスクイズに最後の人)「G」スタックのリストを入力し、最後に#pop

印刷last_out

 

「F」スタック(ちょうど外に持って)last_out = lists.pop()最後から二番目のリストに入る#pop

印刷last_out

私は、コードオフセットリストは、要素がスタックを持っていると思う表しあなたへの書き込み、最初のオフセット0であります

キュー

果物= []

 

fruits.append( 'りんご')

fruits.append( 'バナナ')

fruits.append( 'oragin')

fruits.append( 'ブドウ')

 

first_out = fruits.pop(0)#pop出 'ブドウ'

印刷果物

 

first_out = fruits.pop(0)#pop出 'oragin'

印刷果物

ヒープ、スタック拡張

彼らは、究極の目標は、高度な設定、フロートの他方の端部の固定端と同じであるに達しました。しかし、彼らは少し異なった実装です。

同じポイント:彼らは究極の目標を達成するためには、高度な設定、固定端と他方の端フロートと同じです。

違い:

1)キャッシュ

ストレージスペースのキャッシュを使用して、スタックした後、コール完了は、スペースを解放するには 

二次キャッシュを使用してヒープ、ステートメントのサイクルガベージコレクションの決定 

2)リリース

スタック領域(スタック):コンパイラが自動的にスレッドサイクルのライフサイクルと一緒に、リリースしました。

ヒープ(ヒープ):プログラマによって割り当てられた、またはOSによって解放プログラマのリリースは、廃棄物回収解放します。

コンテンツの3)ストレージ

スタック:関数名、ローカル変数名(基本データ型、呼び出し元のオブジェクトなど)のためのパラメータを設定します。

ヒープ:ストレージアレイ、(新たな新しい文字列(「ASD」)を作成するために使用されるオブジェクトとして)オブジェクト。

4)パフォーマンス

スタック:速い、良い固定メモリサイズ、自由度が小さいです。

ヒープ:遅い、メモリの断片化、自由度が大きいになりやすいです。

おすすめ

転載: www.cnblogs.com/wangdadada/p/12112554.html