本文主要是介绍链表-203.移除链表元素,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
203. 移除链表元素 - 力扣(LeetCode)
示例 1: 输入:head = [1,2,6,3,4,5,6], val = 6 输出:[1,2,3,4,5]
示例 2: 输入:head = [], val = 1 输出:[]
示例 3: 输入:head = [7,7,7,7], val = 7 输出:[]
分析:如果是head->val == val则head = head->next
否则则保存节点的前驱和后继,遇到相等的值则pre = tmp->next->next即可。
/*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:ListNode* removeElements(ListNode* head, int val) {if (head == NULL) {return NULL;}ListNode *tmp = head;ListNode *pre = NULL;while (tmp != NULL) {pre = tmp;if (tmp == head && tmp->val == val) {head = tmp->next;tmp = tmp->next;continue;}if (tmp->next != NULL && tmp->next->val == val) {pre->next = tmp->next->next;continue;}tmp = tmp->next;}return head;}
};
这篇关于链表-203.移除链表元素的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!