#include "SLList.h" #include <iostream> int main(){ ods::SLList<double> l; for (int i = 0; i < 10; i++){ l.add(double(i)); } // l = [0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0] std::cout << l.secondLast() << std::endl; // output "8" }コンパイル, 実行例
bash-3.2$ g++-8 -o checkEx3_2 checkEx3_2.cpp bash-3.2$ ./checkEx3_2 8
#include "SLList.h" #includeコンパイル, 実行例int main(){ ods::SLList<double> l; for (int i = 0; i < 10; i++){ l.add(double(10+ i)); } // l = [10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0] l.set(5, 105.0); // l = [10.0, 11.0, 12.0, 13.0, 14.0, 105.0, 16.0, 17.0, 18.0, 19.0] l.add(2, 22.0); // l = [10.0, 11.0, 22.0, 12.0, 13.0, 14.0, 105.0, 16.0, 17.0, 18.0, 19.0] l.add(0, 20.0); // l = [20.0, 10.0, 11.0, 22.0, 12.0, 13.0, 14.0, 105.0, 16.0, 17.0, 18.0, 19.0] l.add(12, 30.0); // l = [20.0, 10.0, 11.0, 22.0, 12.0, 13.0, 14.0, 105.0, 16.0, 17.0, 18.0, 19.0, 30.0] std::cout << l.remove(1) << std::endl;; // output 10 // l = [20.0, 11.0, 22.0, 12.0, 13.0, 14.0, 105.0, 16.0, 17.0, 18.0, 19.0, 30.0] for (int i = 0; i < l.size(); i++) std::cout << (i == 0 ? "[" : ", ") << l.get(i); std::cout << "]" << std::endl; // output [20, 11, 22, 12, 13, 14, 105, 16, 17, 18, 19, 30] }
bash-3.2$ g++-8 -o checkEx3_3 checkEx3_3.cpp bash-3.2$ ./checkEx3_3 10 [20, 11, 22, 12, 13, 14, 105, 16, 17, 18, 19, 30]
#include <iostream> #include "SLList.h" int main(){ ods::SLList<double> l; for (int i = 0; i < 10; i++){ l.add(double(10 + i)); } // l = [10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0] l.reverse(); // l = [19.0, 18.0, 17.0, 16.0, 15.0, 14.0, 13.0, 12.0, 11.0, 10.0] for (int i = 0; i < 10; i++) std::cout << (i == 0 ? "[" : ", ") << l.remove(); std::cout << "]" << std::endl; // output [19, 18, 17, 16, 15, 14, 13, 12, 11, 10] }コンパイル,実行例
bash-3.2$ g++-8 -o checkEx3_4 checkEx3_4.cpp bash-3.2$ ./checkEx3_4 [19, 18, 17, 16, 15, 14, 13, 12, 11, 10]
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 (head == NULL) 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() { // ここを埋める }
締切は,6/9(日) 23:59です.締切を過ぎても2019年7月末までは6割を上限に採点します.