链表代码
理解指针或引用的含义
将某个变量赋值给指针,实际上就是将这个变量的地址赋值给指针,或者反过来说,指针中存储了这个变量的内存地址,指向了这个变量,通过指针就能找到这个变量。
警惕指针丢失和内存泄漏
执行插入删除操作时,一定得注意 操作顺序,及后续的处理。
image.jpeg
利用哨兵简化实现难度
针对链表的插入、删除操作,需要对插入第一个结点和删除最后一个结点的情况进行特殊处理。 这里引入哨兵结点,在任何时候,不管链表是不是空,head指针都会指向这个哨兵结点。这种带哨兵结点的链表叫带头链表,没有哨兵结点的链表就叫做不带头链表。
哨兵结点不存储数据,因为哨兵结点一直存在,所以插入第一个结点和插入其他结点,删除最后一个结点和删除其他结点,都可以同一位相同的代码实现逻辑。
image.jpeg
重点留意边界条件处理
经常用的边界条件有:
如果链表为空时,代码是否能正常工作?
如果链表只包含一个结点时,代码是否能正常工作?
如果链表只包