は じ め に
本書は「データ構造とアルゴリズム」に関する入門用のテキストである.すでに多くの教科書 が出版されている.筆者は長く学部 2 年生を対象としてこの科目を教えてきた.そこでの経験を 述べると,1 年次に C 言語の科目が配置され,学生は 1 年間,C 言語の各種機能や使い方などを 学習してきたものの,まだ十分に C 言語を理解しているとはいい難い.そこで 2 年次に「デー タ構造とアルゴリズム」を学習させる目的は,基本的なアルゴリズムを理解させることはもちろ んであるが,本学習を通して C 言語をさらに十分に理解させ,ある程度のプログラムを自ら書 けるようにすることにあると考える.また C 言語を用いる理由は,広く一般に使用されている ためだけでなく,C 言語を通して,コンピュータの動作原理も理解させるようにしたいためであ る. 本書は,他の多くの教科書とはかなり異なった構成としている.まず 1 章で簡単に「データ構 造とアルゴリズム」について説明した後,2 章では計算機構成の概要について説明し,また 3 章, 4 章では C 言語の主な概念を再度確認するために,データ型や関数についての説明を行ってい る.5 章以降で初めて,「データ構造とアルゴリズム」の学習に入る.また,学生にとってポイ ンタを理解するのが,大きなハードルになっている場合が多い.そこで,最初はポインタなどを あまり使わないアルゴリズムを紹介し,ポインタについては後ろの章で,C 言語の復習を兼ねて その考え方などを説明しながら,徐々に理解できるような章構成としている.また,先にも述べ たように,本書の目的の 1 つは,学生が自分である程度のプログラムを書けるようにすることに あるため,8 章ではファイルとの入出力について説明を行っている.さらに,実際に計算機を 使ってコンパイルをしたり,実行する際に遭遇するであろうトラブルについても,コラムなどで 対処方法を説明している. ただし,目次を見ていただければわかるように,字句解析,分割統治法,動的計画法など,学 生にとってはかなり高度な内容も掲載している.これは何度も繰り返すように,学生がある程度 のレベルのプログラムが書けるようにしたいためである.本書の内容を十分理解すれば,たぶん 卒業論文で必要となる程度のプログラミング能力は身に付けることができるものと考えている. 筆者の所属する学科では,本書の内容を 1 年間(前期と後期)で教えることとしている.本書の 全部を半期で教えるのは,やや内容が多すぎると思われ,もし半期だけのカリキュラムであれ ば,適宜,必要な章だけを選定していただければよいと考えている. 各章末には,演習問題を掲載している.ただし,解答は掲載していない.これは,学生にプロ グラムを自分で書いてもらいたいためである.プログラムを学習するコツは,とにかく書く経験を積み重ねることである.そこで学生諸君は是非,各演習問題に積極的に取り組んでしてほし い.ただし,問題によっては,かなり高度で,ある程度のステップ数のプログラムを書く必要が あるものもある.そこで,そのような問題については,アスタリスクを付けているので,場合に よっては,対象外にしてもよい.一方,教員の方には,解答を別途お送りできるようにしたい. ご希望の方は,その旨を筆者の e-mail アドレスに送っていただきたい.なお,その際,教員の 方であることを確認させていただきたいので,勤務先のホームページの URL などをお知らせい ただければ,ありがたい. 森 元 逞 連絡先 e-mail アドレス: [email protected] URL: http://izanami.tl.fukuoka-u.ac.jp/~morimoto ii は じ め に