11

私が勉強している大学の試験でよく出題される 2 つの問題は次のとおりです。

  • データ型を定義します。データ型を分類して説明する
  • データ構造を定義します。データ構造を分類して説明する
  • どういうわけか、それらは同じものではありませんか?
    Javaで を作成しているとTree<E>します。のクラスを宣言しTree<E>、それにメソッドを追加し、どこかTree<String> myTree = new Tree<>();でツリー オブジェクトを作成します。

    データの「構造」は、データの「タイプ」になりました。たとえば、変数 myTree の型は何ですか? と
    質問されたとします。答えは、です。データの「構造」は、データの「タイプ」になりました。Tree<E>

    これらは同じであるため、分類する基準に応じて同じ方法で分類されます。プリミティブまたは非プリミティブ。同種または異種。線形または階層。

    それが私の理解です。理解が間違っていますか?

    4

    3 に答える 3

    10

    まず、次の点を修正したいと思います。データ型「Tree」の「myTree」という変数ではなく、「Tree」というクラス myTree」というオブジェクト作成しました。これらは別のものです。

    以下は、データ型の定義です。

    データ型または単に型は、実数値、整数、またはブール値など、その型の可能な値を決定するさまざまな型のデータの 1 つを識別する分類です。その型の値に対して実行できる操作。データの意味; その型の値を格納する方法。

    さて、ウィキペディアによると、データ型の「型」にはさまざまな定義があります。

    あなたが尋ねた質問は良いものです。今日の現代言語には、抽象データ型または略して ADT と呼ばれるデータ型があります。ADT の定義は次のとおりです。

    抽象データ型 (ADT) は、同様の動作を持つ特定のクラスのデータ構造の数学モデルです。または、同様のセマンティクスを持つ 1 つ以上のプログラミング言語の特定のデータ型の場合。抽象データ型は間接的に定義され、それに対して実行される可能性のある操作と、それらの操作の効果 (および場合によってはコスト) に対する数学的制約によってのみ定義されます。

    また、次のようにも書かれています。

    抽象データ型は純粋に理論的なエンティティであり、(とりわけ) 抽象アルゴリズムの記述を簡素化し、データ構造を分類および評価し、プログラミング言語の型システムを正式に記述するために使用されます。ただし、ADT は、特定のデータ型またはデータ構造によって、多くの方法および多くのプログラミング言語で実装できます。または正式な仕様言語で記述されています。

    つまり、データ型またはデータ構造のいずれかを使用して ADT を実装できます。

    データ構造に関しては:

    データ構造とは、効率的に使用できるようにデータをコンピュータに格納および編成する特定の方法です。

    多くの教科書では、これらの単語を同じ意味で使用しています。より複雑なタイプでは、混乱を招く可能性があります。

    ちょっとした例を挙げてみましょう。データベースの実装に b-tree を使用するのは標準的なことです。つまり、このタイプの ADT はこのようなタイプの問題に適しており、より効果的に処理できることがわかっています。しかし、ADT にこの効果を注入するには、目的の出力を提供するデータ構造を作成する必要があります。

    別の例: b ツリー、二分探索ツリー、AA ツリーなど、非常に多くのツリーがあります。これらはすべて基本的にツリーのタイプですが、それぞれが独自のデータ構造になっています。

    参照:利用可能な構造の膨大なリストについては、データ構造のリストを参照してください。

    于 2013-09-22T06:49:07.157 に答える