移除链表元素
方法一:原链表删除(不申请虚拟头结点)
注意:①单独考虑头结点为待删除结点,且头结点后续结点也为待删除结点(用while不用if)
②C++要为删除的节点释放内存(delete Node)
思想:定义临时结点,若头结点为待删除结点(head=head->next),临时结点为待删除节点(cur->next=cur->next->next;)
![](https://img-blog.csdnimg.cn/img_convert/78afb4cc5fbc32a213bf3144ce302953.png)
![](https://img-blog.csdnimg.cn/img_convert/ba1b8262137c14772381bd959385cfe6.png)
方法二:虚拟头结点
优点:不用单独考虑头结点的删除。
思想与方法一相同。
![](https://img-blog.csdnimg.cn/img_convert/6ea4ec1e0da309300df2b0e04b9b5ae0.png)
反转链表
思想:定义cur结点为工作指针,定义pre结点(初始化为NULL)用来存储cur结点的指向地址
翻转过程:首先要把 cur->next 节点用temp指针保存一下,cur->next指向翻转,以便链表断链后用来存储cur指针。循环移动pre和cur指针,最后cur 指针已经指向了null,循环结束,链表也反转完毕了。
![](https://img-blog.csdnimg.cn/img_convert/e8711cb64a344bcf8ea5582fd1e0de2e.gif)
![](https://img-blog.csdnimg.cn/img_convert/ad71bc5206deabecfcd9f1a1ca049520.png)
设计链表
![](https://img-blog.csdnimg.cn/img_convert/5cddbd4ff16307de97686d6ded537b86.png)