#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割を上限に採点します.