今天的收获简单总结一下:
1、链表表头dummyHead不要偷懒写成head!多一个dummy可以提醒自己,这个头是虚拟的,起一个占位的作用,实际操作链表的时候,操作的是dummyHead->next为起始的部分
2、注意链表的index——dummyHead的index不是0,而是没有index!!!链表的index和数组一样是从0开始的,不是从1开始!
3、C++的基本功该复习了,在构造函数里重新“声明”一遍成员变量的错误不要再犯
4、下面这段代码里释放内存的操作要记一下
void deleteAtIndex(int index) {
if (index >= _size || index < 0) {
return;
}
LinkedNode* cur = _dummyHead;
while(index--) {
cur = cur ->next;
}
LinkedNode* tmp = cur->next;
cur->next = cur->next->next;
delete tmp;
//delete命令指示释放了tmp指针原本所指的那部分内存,
//被delete后的指针tmp的值(地址)并非就是NULL,而是随机值。也就是被delete后,
//如果不再加上一句tmp=nullptr,tmp会成为乱指的野指针
//如果之后的程序不小心使用了tmp,会指向难以预想的内存空间
tmp=nullptr;
_size--;
}