抽象データ型(ADT)とは?スタック・キュー・リストの基本操作を解説
データ型と抽象データ型の基本
データ型(Data Type)とは、コンピュータプログラムで扱うことのできるデータの種類を指します。整数型(integer)や浮動小数点型(float)といったデータの種類を表すだけでなく、整数型が4バイト、文字型が1バイトのように、それぞれのデータが占めるメモリ領域の大きさも意味しています。
抽象データ型(Abstract Data Type:ADT)は、特別な種類のデータ型であり、その振る舞いが「値の集合」と「操作の集合」によって定義されます。「抽象的(Abstract)」という言葉が使われるのは、これらのデータ型を利用してさまざまな操作を実行できる一方で、その操作が内部でどのように動作しているのかがユーザーから完全に隠されているためです。つまり、ADTはプリミティブなデータ型から構成されていますが、操作のロジックそのものは外部からは見えないようになっています。
抽象データ型の代表的な例としては、スタック(Stack)、キュー(Queue)、リスト(List)などが挙げられます。
主な抽象データ型とその操作
以下に、各ADTで提供される主な操作を紹介します。
スタック(Stack)の操作
- isFull():スタックが満杯かどうかを確認する
- isEmpty():スタックが空かどうかを確認する
- push(x):要素xをスタックに追加(プッシュ)する
- pop():スタックの先頭から要素を1つ取り除く
- peek():スタックの最上位にある要素を取得する
- size():スタック内に存在する要素数を取得する
キュー(Queue)の操作
- isFull():キューが満杯かどうかを確認する
- isEmpty():キューが空かどうかを確認する
- insert(x):要素xをキューの後端(リア側)に追加する
- delete():キューの前端(フロント側)から要素を1つ取り除く
- size():キュー内に存在する要素数を取得する
リスト(List)の操作
- size():リスト内に存在する要素数を取得する
- insert(x):リストに要素を挿入する
- remove(x):指定された要素をリストから削除する
- get(i):位置iにある要素を取得する
- replace(x, y):要素xを値yに置き換える
まとめ
抽象データ型は、「利用可能な操作(インターフェース)」と「内部の実装(ロジック)」を分離するという重要な考え方に基づいています。この仕組みにより、利用者は内部構造を意識せずにデータを操作でき、開発者も実装の詳細を自由に変更できるというメリットがあります。スタック・キュー・リストなどのADTは、アルゴリズム設計やプログラミングの基礎となる概念なので、それぞれの操作の特徴をしっかり理解しておきましょう。
-
データ構造入門:最小全域木(Minimum Spanning Tree)とは
全域木(スパニングツリー)とは全域木(スパニングツリー)とは、無向グラフの部分集合であり、グラフ内のすべての頂点を最小限の数の辺で接続した木構造のことを指します。グラフ内のすべての頂点が互いに連結されている場合、必ず少なくとも1つの全域木が存在します。また、1つのグラフに対して、複数の全域木が存在することもあります。最小全域木(MST)とは最小全域木(Minimum Spanning Tree:MST)とは、連結された重み付き無向グラフにおいて、すべての頂点を接続しながら、辺の重みの合計が最小となるような辺の部分集合です。MSTを求めるアルゴリズムとしては、プリム法(Prims algorit
-
データ構造における二分木の表現方法|配列と連結リストの違いを解説
コンピュータメモリ上での二分木の表現方法 ここでは、二分木をコンピュータのメモリ上でどのように表現するかについて解説します。表現方法には主に2種類あり、配列を使う方法と連結リスト(リンクリスト)を使う方法があります。 配列による表現 まず、次のような二分木を例に考えてみましょう。 配列による表現では、木の要素をレベル順(幅優先順)に走査しながら格納していきます。つまり、ノードを上のレベルから順番に保存する方式です。存在しない要素がある場合は、その位置を空白のまま残します。上記の木を配列で表現すると、次のようになります。 123456789101112131415 10516-81520