知识点
链表删除操作中,可以使用原链表来直接进行删除操作,也可以设置一个虚拟头节点在进行删除操作
我个人认为 虚拟头节点虽然增加了空间,但理解上比较方便,同时在处理删除头节点问题时也可以统一操作。
题目
给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。
code
class Solution {public:ListNode* removeElements(ListNode* head, int val) {//设置虚拟头节点,统一操作ListNode* dummynode =new ListNode(0);dummynode->next =head;//让虚拟头节点指向头节点ListNode* curnode =dummynode;while(curnode->next!=NULL){if(curnode->next->val ==val){ListNode* temnode =curnode->next;curnode->next =temnode->next;delete temnode;}else{curnode =curnode->next;}}head =dummynode->next;delete dummynode;return head;}};
