目次
両端キューの適用
両端キューの利点
両端キューの欠点
両端キューの構文
両端キューを使った各種メソッドの処理
両端キューの一般的な実装
例 4
両端キューに要素を挿入
このコードでは、要素を両端キューに挿入する C コードを作成しようとしています。これを行うには 2 つの方法があります。
両端キューからの要素へのアクセス
2 つの方法を使用して両端キュー内の要素にアクセスできます。
この記事を通じて、両端キュー、その操作方法、用途、メリットとデメリット、アルゴリズムと C を使用した可能なコードについて学びました。
ホームページ バックエンド開発 C++ Deque の用途、メリット、デメリット

Deque の用途、メリット、デメリット

Sep 06, 2023 pm 06:13 PM
アドバンテージ 応用 デク

Deque の用途、メリット、デメリット

Deque (両端キュー) は、両端キューと同様の機能を提供する順次線形コレクション データ キューです。このデータ構造では、メソッドはデータ処理の先入れ先出し (FIFO) ルールに従いません。要素はキューの最後に挿入され、先頭から削除されるため、このデータ構造はデキューとも呼ばれます。 deque を使用すると、両端からのデータの追加と削除のみが可能になります。デキュー操作の時間計算量は O(1) です。デックには 2 つのタイプがあります -

  • 入力制限あり

    • シングルエンド入力制限。

    • データを両端から削除できるようにします。

  • 出力制限

    • シングルエンド出力制限。

    • # データを両端に挿入できるようにします。

次のコマンドは、コーダーが両端キューのデータセット プーリングを使用してさまざまな操作を実行するのに役立ちます -

  • push_back() - 両端キューの後ろから要素を挿入します。

  • push_front() - 両端キューの先頭から要素を挿入します。

  • pop_back() - 両端キューの後ろから要素を削除します。

  • pop_front() - 両端キューの先頭から要素を削除します。

  • front() -両端キューの先頭要素を返します。

  • back() -両端キューの後ろにある要素を返します。

  • at() - 指定されたインデックスを設定/返します。

  • size() - 要素の数を返します。

  • empty() -両端キューが空の場合は true を返します。

円形配列では両端のキュー操作を使用できます。配列がいっぱいの場合は、プロセスを最初から開始できます。ただし、線形配列の場合、配列がいっぱいの場合、それ以上データを挿入できません。次に、「オーバーフローポップアップ」が表示されます。

両端キューの適用

Deque には、多数のリアルタイム アプリケーションが用意されています。

  • はジョブ スケジューリング アプリケーションに使用されます。

  • 時計回りと反時計回りの回転操作を O(1) 時間で実行できます。

  • 両端キュー アルゴリズムは Web ブラウザの歴史にも存在します。

  • ソート時の元に戻す操作に使用されます。

両端キューの利点

Deque には多くの利点があります。

  • データを前後から追加・削除できます。

  • サイズは動的です。

  • Deque は、操作を実行するための効率的なタイミングを提供します。

  • ここではLIFOスタックが使用されます。

  • ここでは再割り当てできません。

  • これは、適切な同期を備えたスレッドセーフなプロセスです。

  • キャッシュに優しい。

両端キューの欠点

両端キューの欠点は次のとおりです。

  • Deque プロセスのメモリ消費率は高くなります。

  • マルチスレッド同期の問題があります。

  • すべてのプラットフォームで利用できるわけではありません。

  • 並べ替え操作の実装には適していません。

  • Deque には機能が少ないです。

両端キュー操作のアルゴリズム

  • ステップ 1 - サイズ n の両端キュー配列を考えます。

  • ステップ 2 - 2 つのポインターを「front=-1」(フロントの場合) と「rear=0」(セットの場合) に設定します。

このプロセスには多くのサブ部分があります。両端キューで複数の操作を実行できます。ここではそれらをまとめます。

  • deque の前からデータを挿入するためのアルゴリズム:-

    • ステップ 1 - 前の位置を確認します。

    • ステップ 2 - 「front
    • ステップ 3 - それ以外の場合は、「front」を 1 減らす必要があります。

    • ステップ 4 - 新しいキー要素を配列の先頭に追加します。

  • deque の後にデータを挿入するためのアルゴリズム:-

    • ステップ 1 - アレイがいっぱいかどうかを確認します。

    • ステップ 2 - いっぱいの場合は、「rear=0」を適用します。

    • ステップ 3 - それ以外の場合は、「rear」の値を 1 増やします。

    • ステップ 4 - 新しいキーを「array[rear]」に再度追加します。

  • 両端キューの前からデータを削除するためのアルゴリズム:-

    • ステップ 1 -両端キューが空かどうかを確認します。

    • ステップ 2 - リストが空 (「front=-1」) の場合、アンダーフロー状態であるため、削除は実行できません。

    • ステップ 3 -両端キューに要素が 1 つしかない場合。すると「フロント=リア=-1」となります。

    • ステップ 4 - それ以外の場合は、「front」が最後にあり、「front=0」に設定します。

    • ステップ 5 - それ以外の場合、front=front 1。

  • 両端キューの後ろからデータを削除するためのアルゴリズム:-

    • ステップ 1 -両端キューが空かどうかを確認します。

    • ステップ 2 - 空の場合 (「front=-1」)、削除は実行できません。これはアンダーフロー状態です。

    • ステップ 3 - デキューにデータが 1 つしかない場合は、「front=rear=-1」になります。

    • ステップ 4 - それ以外の場合は、以下の手順に従います。

    • ステップ 5 - リアがフロントの場合は、「rear=0」です。前方「後方 = n-1」に進みます。

    • ステップ 6 - それ以外の場合、rear=rear-1。

  • 両端キューが空かどうかを確認するアルゴリズム:-

    • ステップ 1 - フロント=-1 の場合、両端キューは空です。

  • 両端キューがいっぱいかどうかを確認するアルゴリズム:-

    • ステップ 1 - 前=0、後=n-1の場合

    • ステップ 2 - または、フロント=リア 1

両端キューの構文

リーリー

データ構造では、両端キューはスタックとキューのいくつかのプロパティを継承します。 C では、デキューはベクトルのベクトルとして実装されます。

両端キューを使った各種メソッドの処理

  • 方法 1 - 一般的な方法で両端キューを実装する

  • 方法 2 - 要素を両端キューに挿入する

  • 方法 3 - デキューから要素にアクセスする

  • 方法 4 - デキューの要素を変更する

両端キューの一般的な実装

この C ビルド コードでは、一般的な方法で deque 操作を構成します。この例では、キューのバックエンドに要素を挿入します。これにより、システム全体がどのように実行されます。

例 1

リーリー ###出力### リーリー

両端キューに要素を挿入

このコードでは、要素を両端キューに挿入する C コードを作成しようとしています。これを行うには 2 つの方法があります。

    push_back() - 配列の最後に要素を挿入します。
  • push_front() - 配列の先頭に要素を挿入します。
  • 例 2
リーリー ###出力### リーリー

両端キューからの要素へのアクセス

2 つの方法を使用して両端キュー内の要素にアクセスできます。

front() - フロントで戻り値を取得できます。

  • back() - 次のデータを返します。

  • at() - 指定されたインデックスから戻ります。

  • リーリー ###出力### リーリー

    両端キューの要素の変更

  • このコードでは、at() メソッドを使用して、特定の両端キューの要素を置換または変更できます。

例 4

リーリー ###出力### リーリー ###結論は###

この記事を通じて、両端キュー、その操作方法、用途、メリットとデメリット、アルゴリズムと C を使用した可能なコードについて学びました。

以上がDeque の用途、メリット、デメリットの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

iPhoneのホーム画面から削除を元に戻す方法 iPhoneのホーム画面から削除を元に戻す方法 Apr 17, 2024 pm 07:37 PM

ホーム画面から重要なものを削除してしまい、元に戻そうとしていますか?さまざまな方法でアプリのアイコンを画面に戻すことができます。 iPhoneでホーム画面から削除を元に戻す方法 前述したように、iPhoneでこの変更を復元する方法はいくつかあります。方法 1 – App ライブラリのアプリ アイコンを置き換える App ライブラリから直接ホーム画面にアプリ アイコンを配置できます。ステップ 1 – 横にスワイプして、アプリ ライブラリ内のすべてのアプリを見つけます。ステップ 2 – 前に削除したアプリのアイコンを見つけます。ステップ 3 – アプリのアイコンをメインライブラリからホーム画面上の正しい場所にドラッグするだけです。これが応用図です

PHP における矢印記号の役割と実際の応用 PHP における矢印記号の役割と実際の応用 Mar 22, 2024 am 11:30 AM

PHP における矢印記号の役割と実際の応用 PHP では、通常、オブジェクトのプロパティとメソッドにアクセスするために矢印記号 (->) が使用されます。オブジェクトとは、PHP におけるオブジェクト指向プログラミング (OOP) の基本概念の 1 つで、実際の開発においては、矢印記号がオブジェクトを操作する上で重要な役割を果たします。この記事では、矢印記号の役割と実際の応用例を紹介し、読者の理解を深めるために具体的なコード例を示します。 1. オブジェクトのプロパティにアクセスするための矢印シンボルの役割 矢印シンボルは、オブジェクトのプロパティにアクセスするために使用できます。ペアをインスタンス化するとき

初心者から熟練者まで: Linux tee コマンドのさまざまなアプリケーション シナリオを探索する 初心者から熟練者まで: Linux tee コマンドのさまざまなアプリケーション シナリオを探索する Mar 20, 2024 am 10:00 AM

Linuxtee コマンドは、既存の出力に影響を与えることなく、出力をファイルに書き込んだり、別のコマンドに出力を送信したりできる、非常に便利なコマンド ライン ツールです。この記事では、入門から習熟まで、Linuxtee コマンドのさまざまな応用シナリオを詳しく見ていきます。 1. 基本的な使い方 まずは、teeコマンドの基本的な使い方を見てみましょう。 tee コマンドの構文は次のとおりです。 tee[OPTION]...[FILE]...このコマンドは、標準入力からデータを読み取り、データを保存します。

Go 言語の利点と応用シナリオを探る Go 言語の利点と応用シナリオを探る Mar 27, 2024 pm 03:48 PM

Go 言語は、Google によって開発され、2007 年に初めてリリースされたオープンソース プログラミング言語です。シンプルで習得しやすく、効率的で同時実行性の高い言語となるように設計されており、ますます多くの開発者に好まれています。この記事では、Go 言語の利点を探り、Go 言語に適したいくつかのアプリケーション シナリオを紹介し、具体的なコード例を示します。利点: 強力な同時実行性: Go 言語には、同時プログラミングを簡単に実装できる軽量スレッドのゴルーチンのサポートが組み込まれています。 Goroutin は go キーワードを使用して開始できます

Go言語の特徴と利点の分析 Go言語の特徴と利点の分析 Apr 03, 2024 pm 10:06 PM

Go 言語の特徴: 高い同時実行性 (ゴルーチン) 自動ガベージ コレクション クロスプラットフォームのシンプルさ モジュール性 Go 言語の利点: 高いパフォーマンス セキュリティ スケーラビリティ コミュニティ サポート

サーバーレス アーキテクチャを使用して PHP アプリケーションを展開する利点と欠点は何ですか? サーバーレス アーキテクチャを使用して PHP アプリケーションを展開する利点と欠点は何ですか? May 06, 2024 pm 09:15 PM

サーバーレス アーキテクチャを使用して PHP アプリケーションを展開すると、メンテナンス不要、従量課金制、拡張性が高く、開発が簡素化され、複数のサービスがサポートされるという利点があります。デメリットとしては、コールド スタート時間、デバッグの難しさ、ベンダー ロックイン、機能の制限、コスト最適化の課題などが挙げられます。

クラウドコンピューティング分野におけるLinuxの幅広い応用 クラウドコンピューティング分野におけるLinuxの幅広い応用 Mar 20, 2024 pm 04:51 PM

クラウド コンピューティングの分野における Linux の幅広い応用 クラウド コンピューティング テクノロジの継続的な開発と普及に伴い、オープン ソース オペレーティング システムとしての Linux はクラウド コンピューティングの分野で重要な役割を果たしています。 Linux システムは、その安定性、セキュリティ、柔軟性により、さまざまなクラウド コンピューティング プラットフォームやサービスで広く使用されており、クラウド コンピューティング テクノロジーの開発に強固な基盤を提供しています。この記事では、クラウド コンピューティング分野における Linux の幅広いアプリケーションを紹介し、具体的なコード例を示します。 1. クラウドコンピューティングプラットフォームにおけるLinuxのアプリケーション仮想化技術 仮想化技術

Golangサーバーのメリットと有用性を詳しく解説 Golangサーバーのメリットと有用性を詳しく解説 Mar 20, 2024 pm 01:51 PM

Golang は Google によって開発されたオープンソース プログラミング言語で、効率的、高速かつ強力であり、クラウド コンピューティング、ネットワーク プログラミング、ビッグ データ処理などの分野で広く使用されています。厳密に型指定された静的言語である Golang には、サーバー側アプリケーションを構築する際に多くの利点があります。この記事では、Golang サーバーの利点と有用性を詳細に分析し、具体的なコード例を通じてその威力を説明します。 1. 高性能 Golang コンパイラーは、コードをローカル コードにコンパイルできます。

See all articles