データ構造スタックプリミティブ操作
スタックは後入れ先出しのデータ構造です。スタックは、式、呼び出し、再帰戦略などを評価するためにさまざまな領域で使用されます。スタックには、いくつかの基本的な操作があります。ここでは、これらのスタックの操作と、スタックADTを使用した1つの例を示します。
ADT(抽象データ型)は特殊な種類のデータ型であり、その動作は一連の値と一連の操作によって定義されます。これらのデータ型を使用できるため、キーワード「Abstract」が使用され、さまざまな操作を実行できます。しかし、これらの操作がどのように機能しているかは、ユーザーには完全に隠されています。 ADTはプリミティブデータ型で構成されていますが、操作ロジックは非表示になっています。
これらは、StackADTのいくつかの操作または機能です。
- isFull()、これはスタックがいっぱいかどうかを確認するために使用されます
- isEmpry()、これはスタックが空かどうかを確認するために使用されます
- push(x)、これはxをスタックにプッシュするために使用されます
- pop()、これはスタックの最上位から1つの要素を削除するために使用されます
- peek()、これはスタックの最上位の要素を取得するために使用されます
- size()、この関数は、スタックに存在する要素の数を取得するために使用されます
例
#include<iostream>
#include<stack>
using namespace std;
main(){
stack<int> stk;
if(stk.empty()){
cout << "Stack is empty" << endl;
} else {
cout << "Stack is not empty" << endl;
}
//insert elements into stack
stk.push(10);
stk.push(20);
stk.push(30);
stk.push(40);
stk.push(50);
cout << "Size of the stack: " << stk.size() << endl;
//pop and dispay elements
while(!stk.empty()) {
int item = stk.top(); // same as peek operation
stk.pop();
cout << item << " ";
}
} 出力
Stack is empty Size of the stack: 5 50 40 30 20 10
-
データ構造における二分木表現
ここでは、コンピュータのメモリでバイナリツリーを表現する方法を説明します。表現するには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)回の操作が必要になります。 集計方法 総コストを見つけるために集計方法が使用されます。大量のデータを追加する場合は、この式で償却原価を見つける必要があり