課題3(5/24出題)


課題


ヒント

Exercise 3.2 - 3.4 は配布プログラムの中の SLList.h に手を加えて回答すること が前提になっています.それぞれの練習問題をチェックするプログラムの例をあげ ます. Exercise 3.2 はメンバー変数 n を使わないことが条件になっています.この条件 定義をを満たさない誤った回答の例を示します(SLList.hのSLListの定義の中に,secondLastの定義を加える).
	T peek() {
		return head->x;
	}

        T secondLast() {
          Node *u = head;
          for (int i = 0; i < n - 2; i++) u = u->next;
          return u->x;
        }

	bool add(T x) {

(注) 要素数が0又は1の時にsecondLast()がどのような挙動を示すべきかは問題 には書かれていない.ここでは, エラーチェックを行っていないので,要素数 が0の時は,実行時にはSegmentation faultのようなエラーが発生する可能性が あり,要素数が1の時はsecondLast() ではなくlast()を返す. 参考のために,変数tailも変数nも使わないlast()の定義を示します.
        T last() {
          if(n==0) return null;
          Node * u = head;
          while(u->next !=NULL) u = u->next;
          return u->x;
        }
Exercise 3.3はSLList.hのSLListの定義の中に,以下の行を入れてから「ここ を埋める」のところにコードを書いて完成させてください.
        T get(int i) {
// ここを埋める
        }
        T set(int i, T x){
// ここを埋める
        }
        void add(int i, T x){
// ここを埋める
        }
        T remove(int i){
// ここを埋める
        }
Exercise 3.4はSLList.hのSLListの定義の中に,以下の行を入れてから「ここ を埋める」のところにコードを書いて完成させてください.
        void reverse() {
// ここを埋める
        }

提出方法

作成したすべてのプログラムと,各プログラムに関する簡単な説明をまとめた プレインテキスト形式(テキストエディタで編集可能な形式)またはPDF形式の ファイルを1つ作成して,ITC-LMSの「課題3(5/24出題)」(5/24の講義時間中に公開される予定)に提出してください.

締切は,6/3(金) 23:59です.締切を過ぎても2016年7月末までは6割を上限に採点します.


オプション課題

課題だけで物足りない人は,以下のオプション課題にも取り組んでください.