使用指针的指针curr记录指向当前节点指针的地址。指针的指针可以解引用得到指向当前节点的指针,然后可以进一步修改其next成员,指向删除节点的后一节点,实现节点删除
每次处理开始先解引用curr,检查指向当前节点的指针是否为空,为空说明链表为空或者到达链表结尾,此时处理完成。否则,说明当前节点不为空,需要进一步处理:
-
如果当前节点中,存在下一个节点的指针(即next成员非空)并且当前节点的值和下一节点的值相等,则删除下一节点,用临时指针tp记录删除节点的地址,然后更新链表
-
否则,说明下一节点不能删除或者下一节点为空,因此修改curr的值,使其保存指向下一节点的指针的地址。
需要从链表头遍历到链表结尾,时间代价为n