Exercise 3.4 は "should not use any secondary data structures, and should not create any new nodes." という条件を満たす必要がありますが,report3.tgzの中に含まれるSLList.hの中からincludeされているex3_4.hは,
void reverse(){ if (head == NULL) return; std::vectorのように,この条件を満たしていませんが(temp というsecondary data structureを使っている,new Nodeのところで,create new nodesを実行している),動くことは動きます.temp; Node* u = head; while (u != NULL){ Node* next = u->next; temp.push_back(new Node(u->x)); delete u; u = next; } for (size_t i = 0; i < temp.size() - 1; i++) { temp[i + 1]->next = temp[i]; } head = temp[temp.size() - 1]; tail = temp[0]; } //Ex3_4
動作チェックをおこなうプログラム check_ex3_4.cppを
g++ --std=c++11 -Wall -O2 -o check_ex3_4 check_ex3_4.cppでコンパイルし.
./check_ex3_3で実行してOKが出ることで,このex3_4.hが正しく動作することを確認できます.誤ったプログラムを実行すると,間違いを検出できることもありますが,segmentation faultになることもあります.
report3.tgzの中に含まれるDLList.hの中からincludeされているex3_7.hは,
bool isPalindrome() { std::vectorのように,一度 vectorに変換してから,palindromeかどうかをチェックするプログラムで,これ自体も解の要件は満たしていますが,補助的なデータ構造を使わずに解答することを期待しています.v; Node *node = dummy.next; while (node != &dummy) { v.push_back(node->x); node = node->next; } return v == std::vector (v.rbegin(), v.rend()); }
動作チェックをおこなうプログラム check_ex3_7.cppを
g++ --std=c++11 -Wall -O2 -o check_ex3_7 check_ex3_7.cppでコンパイルし.
./check_ex3_7で実行してOKが出ることで,このex3_7.hが正しく動作することを確認できます.誤ったプログラムを実行すると,間違いを検出できることもありますが,segmentation faultになることもあります.
report3.tgzの中に含まれるDLList.hの中からincludeされているex3_12.hは,
void reverse() { std::vectorのように,一度 vectorに変換してから,逆順になるようにaddするプログラムで,これ自体も解の要件は満たしていますが,補助的なデータ構造を使わずに解答することを期待します.v; while (size() > 0) { v.push_back(remove(0)); } for (T x : v) { add(0, x); } }
動作チェックをおこなうプログラム check_ex3_12.cppを
g++ --std=c++11 -Wall -O2 -o check_ex3_12 check_ex3_12.cppでコンパイルし.
./check_ex3_12で実行してOKが出ることで,このex3_12.hが正しく動作することを確認できます.誤ったプログラムを実行すると,間違いを検出できることもありますが,segmentation faultになることもあります.
締切は,6/12(日) 23:59です.締切を過ぎても2022年7月末までは6割を上限に採点します.