失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > LeetCode刷题日记 203. 移除链表元素

LeetCode刷题日记 203. 移除链表元素

时间:2020-03-06 00:05:34

相关推荐

LeetCode刷题日记 203. 移除链表元素

删除链表中等于给定值val的所有节点。

/*** Definition for singly-linked list.* struct ListNode {*int val;*ListNode *next;*ListNode(int x) : val(x), next(NULL) {}* };*/class Solution {public:ListNode* removeElements(ListNode* head, int val) {ListNode* sentinel = new ListNode (0); //建立哨兵节点,其值为0ListNode *prev = sentinel, *curr = head, *toDelete = nullptr; //定义哨兵节点为前一个节点,现节点为链表sentinel -> next = head; //将哨兵节点的向后指针连接到链表while(curr != nullptr) //当前节点后面还不是没有指针时,该循环继续运转{if(curr->val == val) //当前节点值与val相同{prev->next = curr ->next; //前一节点的向后指针与当前指针相同,这样就没有指针将指向当前节点toDelete = curr; //当前节点预备删除}else prev = curr; //若值不相等,则继续往下遍历curr = curr->next;if(toDelete != nullptr) //当toDelete有指针时,该循环开始运行{delete toDelete; //删除当前节点toDelete = nullptr; //将让钱节点的指针清空}}ListNode *ret = sentinel ->next; //删除哨兵delete sentinel;return ret;}};

如果觉得《LeetCode刷题日记 203. 移除链表元素》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。