(cache) アルゴリズム基礎論演習2009

課題5 「リスト(複合)」


内容

  課題4では、リストへデータを挿入する手続き(insert)と、リストの中身を表示する手続き(printList)を作成した。
  課題5では、リストへの操作に関する以下の3つの手続きを作成しなさい。

    ① insert2 : 要素を昇順に挿入する手続き
    ② delete : 要素を削除する手続き
    ③ search : 要素を検索する手続き

  プログラムの全体的な流れだが、まず insert2 を用いてリストに要素を昇順に挿入する。
  続いて、search を用いてリスト中に検索した要素が含まれているかを調べる。
  見つからなければ検索を続行し、見つかった場合は検索した要素を削除するかどうかを利用者に問い、
  削除するようならば delete を用いて消す。
  挿入と検索の終了は、どちらも 0 を入力したら終了 とする。

  ※ リストに挿入するデータの型は「整数」とする。

  ※ 正しく動作をしているかを確認するために、
    前週で作成した“リストの中身を表示する手続き(printList)”もプログラムに組み込みなさい。

  ※ リストに同じ要素が複数含まれている状態で、その要素をリストから削除する場合は1つだけ消せればよい。
    例えば、既に [1,2,2] というデータが入っているリストから、2 を削除すると [1,2] となるようにすること。

  ※ 来週 11/23 は祝日なので、今回の課題の締切は 11/27 とする。

入力

  (ⅰ) リストに挿入する整数
  (ⅱ) リストに検索をかける要素(整数)
  (ⅲ) 要素を削除するかどうか

  ※ (ⅰ)(ⅱ) は 0 が入力されるまで、入力および検索を繰り返すようにする。

出力

  出力は「リストの中身」「検索した要素の有無」とする。
  具体的には、以下のものを出力しなさい。

  (ⅰ) 全ての挿入が終了したリスト      (正しく“昇順”で挿入できているか)
  (ⅱ) 検索した要素がリストに存在するか  (表示方法は自由)
  (ⅲ) 要素を削除した直後のリスト      (正しく要素が削除できているか)

実行

  以下の流れにそってプログラムを実行せよ。

  手順1: 5,-10,-5,15,10,0 と順番に入力してリストに要素を 昇順に挿入 する。(但し、最後の 0 は入力終了の 0 である)
  手順2: リストに含まれていない要素として 20検索 する。
  手順3: -5-10検索 し、両方ともリストから 削除 する。
  手順4: 0 を検索してプログラムを終了する。

  正しく動作していれば、正の整数 [5,10,15] のみがリストに含まれているだろう。

ヒント

出力例

  入力を赤字で示した。


input insert value (value=0:end)
input number : 3
input number : 1
input number : 2
input number : 0
List : 1,2,3,

input search value (value=0:end)
input number : 4
4 is not found.
input number : 3
3 is found.
delete?(y/n)
y
List : 1,2,
input number : 0