LeetCode203 移除链表元素
删除链表中等于给定值 val 的所有节点。
示例:
输入: 1->2->6->3->4->5->6, val = 6 输出: 1->2->3->4->5
//章节 - 链表 //三、经典问题 //2.移除链表元素 /* 算法思想: */ //算法实现: /** * 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* p = new ListNode(0);//声明一个节点空间 p->next = head;//指向第一个节点 ListNode* i = p; if (head == NULL) return NULL; else { while (i->next != NULL) //如果节点不为空 { if (i->next->val == val) { ListNode* ptemp = i->next;//声明一个指针指向第一个节点 i->next = i->next->next;//将等于val的节点去掉 ptemp->next = NULL; delete ptemp; } else i = i->next; } } return p->next;//返回第一个节点,这里是关键 } };