誕生日にもらった意外なもの

Javaを使ってDataStructureを学ぶことになりました。
しかし、そもそもデータストラクチャーというのは
何のことなのですか?直訳するとデータの構造ですよね。
たとえば配列などもそうだ、と聞きましたが
私にはイマイチぴんとくるものがありません。
分かりやすーい説明をお願いします。

A 回答 (2件)

コンピュタデータは、使うために集め、保管・記録するのです。

「使う」とはコンピュタにとっては、検索することです。いかに速く探せるかが、使えるかどうかの死命を制します。メモリやデータが存在しそうな記録メディア(HDなど)からメモリに読みこみ、望むデータが存在するアドレスを知るのに時間が掛かります。
(1)メモリ上の望むデータのあるアドレスを知るための
時間
(2)HDの一部をメモリに読み、存在するか調べることを繰り返す時間
(3)最近は受け・送り届ける通信速度も重要です
のうち(2)が遅れの大半を占めます。
データは、ファイルという形でレコードを保存していますが、その対策のために「整頓」されていないと、しらみつぶしにHDを読みメモリ上で調べないといけなくて、速く探せない。
その「整頓のし方」が色々人類の知恵として考えられたものがあります。それがデータ構造です。
(1)番地計算型(配列、DOSランダムファイルなど
固定長)
(2)見出しを持つ型(ISAMなど)
(3)構造を持つ型(Bツリーなど)
(4)ハッシュ型
(5)キュー
(6)リンク型
もっと広く言えば、記録形態全般がデータ構造と言えるかもしれない。CD-ROMの記録方式、エクセルワードはどの様にメモリに展開したり、HD上に記録しているかなど)
昔はメモリが1メガもなく、メモリ上の作業場が狭かった。今は100メガ1ギガとかも使えて、メモリ上で1つづつレコードデータを虱潰しに判別しても時間を感じなくなって、素人プログラマなどがデータ構造を取り入れる必要性を感じなくなっているかもしれないが、どこまでメモリが広く使える時代になっても、適したデータ構造の大切さは衰えないでしょう。HD上の記録形式とメモリに読み込み後の構造がありますので念のため。
    • good
    • 0
この回答へのお礼

つまりはコンピューターの中の情報を
うまい具合に整理整頓する為の
キーワードとして解釈していいのですよね?

データ構造が勉強できるお勧めの本とかも
もしあれば教えてください。

ありがとうございました。

お礼日時:2003/02/07 18:49

これから学ぶということであればまだぴんとくる必要はないかと思いますが、簡単に。



コンピュータは多量のデータを扱ってこそ真価を発揮するわけですが、ただ単にデータを寄せ集めた状態では効率的に扱えません。そこでどんなデータをどう使うかにあわせてうまく配置し、それらのデータ間のつながりをデータ自身に持たせたりして効率の向上を図るのです。これがデータ構造です。

配列は最も単純なデータ構造ですが、乱雑に配列に入っているよりは昇順に並んでいるほうがいい場合もあります。これは整列された配列というデータ構造になります。配列では途中のデータの削除や挿入に手間がかかったりデータ数に制限があったりしますが、連結リスト(あるいは単にリスト)という構造を使えばそれが解決できます。ところが、リストでn番目のデータがほしいというと、とたんに効率が悪くなります。

このように、どんなデータ構造があるかということだけでなく、そのデータ構造はどんな処理に向いているかなどもあわせて学んでいくことになると思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!