mkdir ~/mis2を実行する. http://opendatastructures.orgのc++ edition, c++ sources ( C++ sources(講義独自版) ) からダウンロードしたファイルをホームフォルダの下のmis2に置く.ods.cpp.tgzというファイルができた時は,
cd ~/mis2 tar zxvf ods-cpp.tgzods-cpp.tarというファイルができた時は,
cd ~/mis2 tar xvf ods-cpp.tarを実行するとcppというフォルダができる.Finderからダブルクリックしてもアーカイブユーティリティが立ち上がり展開されるので,そちらでも良い.
#include "SLList.h" #include <iostream> int main(){ ods::SLList<int> l; for (int i = 0; i < 10; i++){ l.add(i); } // [0 1 2 3 4 5 6 7 8 9] for (int i = 10; i < 20; i++){ l.push(i); } // [19 18 17 16 15 14 13 12 11 10 0 1 2 3 4 5 6 7 8 9] std::cerr << l.pop() << std::endl; // [18 17 16 15 14 13 12 11 10 0 1 2 3 4 5 6 7 8 9] for (int i = 0; i < 10; i++){ std::cerr << l.remove() << std::endl; } // [1 2 3 4 5 6 7 8 9] return 0; }これを,
cd ~/mis2/cpp g++-5 -o sllistTest sllistTest.cppでコンパイルし,
./sllistTestで実行する.
return 0;の前に,
for (int i = 0; i < 3; i++){ std::cerr << l.pop() << (i == 2 ? "\n" : ","); }を入れ実行した時, 出力の最後の行に表示されるのは,次のどれか?
#include "DLList.h" #include <iostream> void print(std::ostream& os, ods::DLList<int> & l){ os << "["; for (int i = 0; i < l.size(); ++i){ os << (i == 0 ? "" : ",") << l.get(i); } os << "]" << std::endl; } int main(){ ods::DLList<int> l; for (int i = 0; i < 10; i++){ l.add(i, i * 2); } // l = [0,2,4,6,8,10,12,14,16,18] print(std::cerr, l); for (int i = 0; i < 10; i++){ l.add(5, 100 + i); } // l = [0,2,4,6,8,109,108,107,106,105,104,103,102,101,100,10,12,14,16,18] print(std::cerr, l); for (int i = 0; i < 10; i++){ l.set(i * 2, 200 + i); } // l = [200,2,201,6,202,109,203,107,204,105,205,103,206,101,207,10,208,14,209,18] print(std::cerr, l); l.remove(1); // l = [200,201,6,202,109,203,107,204,105,205,103,206,101,207,10,208,14,209,18] print(std::cerr, l); return 0; }これを,
cd ~/mis2/cpp g++-5 -o dllistTest dllistTest.cppでコンパイルし,
./dllistTestで実行する.
return 0;の前に,
l.add(1, 10); for (int i = 0; i < 3; i++){ std::cerr << l.remove(i) << (i == 2 ? "\n" : ","); }を入れ実行した時, 出力の最後の行に表示されるのは,次のどれか?
#include "SEList.h" #include <iostream> void print(std::ostream& os, ods::SEList<int> & l){ os << "["; for (int i = 0; i < l.size(); ++i){ os << (i == 0 ? "" : ",") << l.get(i); } os << "]" << std::endl; } int main(){ ods::SEList<int> l(10); for (int i = 0; i < 10; i++){ l.add(i, i * 2); } // l = [0,2,4,6,8,10,12,14,16,18] print(std::cerr, l); for (int i = 0; i < 10; i++){ l.add(5, 100 + i); } // l = [0,2,4,6,8,109,108,107,106,105,104,103,102,101,100,10,12,14,16,18] print(std::cerr, l); for (int i = 0; i < 10; i++){ l.set(i * 2, 200 + i); } // l = [200,2,201,6,202,109,203,107,204,105,205,103,206,101,207,10,208,14,209,18] print(std::cerr, l); l.remove(1); // l = [200,201,6,202,109,203,107,204,105,205,103,206,101,207,10,208,14,209,18] print(std::cerr, l); return 0; }これを,
cd ~/mis2/cpp g++-5 -o selistTest selistTest.cppでコンパイルし,
./selistTestで実行する.
return 0;の前に,
l.add(10, 10); for (int i = 0; i < 3; i++){ std::cerr << l.remove(i * 5 + 3) << (i == 2 ? "\n" : ","); }を入れ実行した時, 出力の最後の行に表示されるのは,次のどれか? [200,201,6,202,109, 203,107,204,105,205, 10, 103,206,101,207, 10,208,14,209,18]