//我真的就是当一个笔记写的...表示自己很弱 orz、
这个assignment是自己implement一个非常非常简单的linked list,于是就开始做咯。
以前的时候没有仔细看过struct 和 union 所以先做了一个test。
linked list 通过一个个的pointer连接起来。
#include <iostream>
struct Cell{
int int_m;
double double_m;
char* symbol_m;
};
int main(){
Cell *c = new Cell;
c->double_m = 2.718;
std::cout << c->double_m;
//std::cout << c->int_m;
//std::cout << c->symbol_m;
return 0;
}
上面的是我为了确定调用效果所做的一个测试。然后发现comment做的两行如果写出来的话是会导致没有任何输出的,着可能和编译器有关,可能是default会设置有些时候出错就终止了。用->调用的原因是之前看到过的用 * 号解引用然后用 . 调用property。
之后在struct里面插入了union这个元素,原因是每次的Cell只需要一种type,所以多余的type其实是对内存的浪费。
#include <iostream>
struct Cell{
enum TypeTag {type_int, type_double, type_sympol};
TypeTag tag_m;
union {
int int_m;
double double_m;
char* symbol_m;
};
};
int main(){
Cell *c = new Cell;
c->double_m = 2.718;
c->tag_m = Cell::type_int;
std::cout << c->double_m << std::endl;
std::cout << c->tag_m;
//std::cout << c->int_m;
//std::cout << c->symbol_m;
return 0;
}
上面的内容是加入了一个enum的域,基本第一部分的学习就完成了(其实还没到assignment,就是之前都不会于是先自学一下),注意上面的Cell:: 这个符号,因为beyond main了。
其实得去问一下dekai,为什么在他自己的function里面是普通的int,但是在课程要求里面就是const int了。
Node.hpp这个文件就是linkedlist的每一个格子。其中include了"Cell.hpp"。
Cell.hpp这个文件是格子中的element,定义方式也跟上面的code差不多。
在linkedlist_internal.hpp中的文件还是非常简单的(在用其他编译器找到规律之后),于是就是设置几个node的值然后返回一个pointer。
<hr>
update