質問: スタック | Programming Place Plus アルゴリズムとデータ構造編【データ構造】 第5章 のサイトにて > > これらの機能を持ってさえいれば、スタックが内部的にどのような形でデータを管理していても構わないといえます。このように、必要な機能の要件だけが定義されているようなデータ構造を、抽象データ構造と呼びます。 > > > と書かれており、さらに > > スタックは、抽象データ構造なので、内部のデータの管理方法には自由度があります。 > > > と書かれておりますが、**スタック・キュー等のデータ構造**を「**抽象データ構造**」と言うんでしょうか? そもそも**「抽象データ構造」って何なんでしょうか?** 私自身の大雑把な考えですが、 **内部的に「データ構造」とその「操作のまとまり」がある形式の「データ型(構造)」** ということなんでしょうか? 分かりやすい例えで教えてください。よろしくお願いいたします。
回答: 以前の質問からずっと言っていますが、文章をしっかり読みましょう。 その部分だけを読むのではなく、その周辺まで含めてしっかり文脈を取ってください。 > > このように、必要な機能の要件だけが定義されているようなデータ構造を、抽象データ構造と呼びます。 > > > 「このように」と書いているのですから、例示はその直前にきちんと示されているはずです。 > > スタックというデータ構造にとって、最低限必要な機能は以下のとおりです。 > > > * データを積む (push) > * データを降ろす (pop) > * スタックが空かどうか調べる (is_empty) > > > (中略) > > これらの機能を持ってさえいれば、スタックが内部的にどのような形でデータを管理していても構わないといえます。 > > > push,pop,is_emptyという機能の**抽象的な要件**だけを設定していますが、**具体的にどのように実現するか**については一切言及していません。 こんな風に、「何ができるか」だけを決めているものが「抽象データ構造」といえるでしょう。 「スタック」などは、これらの構造をもつもの、あるいは構造自体に付けた名前にすぎません。