データ構造内のキューの操作
キューは先入れ先出しデータ構造です。キューは、グラフ走査アルゴリズムの幅優先探索などのさまざまな領域で使用されます。キューには、いくつかの基本的な操作があります。ここでは、これらのキューの操作と、キューADTを使用した1つの例を示します。
ADT(抽象データ型)は特殊な種類のデータ型であり、その動作は一連の値と一連の操作によって定義されます。これらのデータ型を使用できるため、キーワード「Abstract」が使用され、さまざまな操作を実行できます。しかし、これらの操作がどのように機能しているかは、ユーザーには完全に隠されています。 ADTはプリミティブデータ型で構成されていますが、操作ロジックは非表示になっています。
これらは、キューADTのいくつかの操作または機能です。
- isFull()、これはキューがいっぱいかどうかを確認するために使用されます
- isEmpry()、これはキューが空かどうかを確認するために使用されます
- enqueue(x)、これはキューの最後にxをプッシュするために使用されます
- delete()、これは、フロントエンドから1つの要素を削除するために使用されます
- front()、これはキューの最前部の要素を取得するために使用されます
- size()、この関数は、キューに存在する要素の数を取得するために使用されます
例
#include<iostream>
#include<queue>
using namespace std;
main(){
queue<int> que;
if(que.empty()){
cout << "Queue is empty" << endl;
} else {
cout << "Queue is not empty" << endl;
}
//insert elements into queue
que.push(10);
que.push(20);
que.push(30);
que.push(40);
que.push(50);
cout << "Size of the queue: " << que.size() << endl;
//delete and dispay elements
while(!que.empty()) {
int item = que.front(); // read element from first position
que.pop();
cout << item << " ";
}
} 出力
Queue is empty Size of the queue: 5 10 20 30 40 50
-
データ構造における二分木表現
ここでは、コンピュータのメモリでバイナリツリーを表現する方法を説明します。表現するには2つの異なる方法があります。これらは配列とリンクリストを使用しています。 このようなツリーが1つあるとします- 配列表現は、レベル順の方法を使用して要素をスキャンすることにより、ツリーデータを格納します。したがって、ノードをレベルごとに格納します。一部の要素が欠落している場合は、空白のままにします。上記のツリーの表現は以下のようになります- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 10 5
-
データ構造の償却時間計算量
償却分析 この分析は、時折の操作が非常に遅い場合に使用されますが、非常に頻繁に実行される操作のほとんどは高速です。データ構造では、ハッシュテーブル、互いに素なセットなどの償却分析が必要です。 ハッシュテーブルでは、ほとんどの場合、検索時間の複雑さはO(1)ですが、O(n)操作を実行することもあります。ほとんどの場合、ハッシュテーブルで要素を検索または挿入する場合、タスクは一定時間かかりますが、衝突が発生すると、衝突を解決するためにO(n)回の操作が必要になります。 集計方法 総コストを見つけるために集計方法が使用されます。大量のデータを追加する場合は、この式で償却原価を見つける必要があり