一:题目
![在这里插入图片描述](https://img-blog.csdnimg.cn/fac828e0d64d4821b43a814f8c80b6e6.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5b-D5Lit5peg5aWz5Lq6IOaVsueggeiHqueEtuelnu-8ge-8gQ==,size_11,color_FFFFFF,t_70,g_se,x_16)
二:上码
1:方法一:(虚拟一个首结点)
class Solution {
public:
ListNode* removeElements(ListNode* head, int val) {
ListNode * virtuals = new ListNode(0);
virtuals->next = head;
ListNode *node = virtuals;
while(node != NULL && node->next != NULL){
if(node->next->val == val){
ListNode *temp = node->next;
node->next = node->next->next;
delete temp;
}else{
node = node->next;
}
}
head = virtuals->next;
delete(virtuals);
return head;
}
};
2:方法二(不对首结点进行处理)
class Solution {
public:
ListNode* removeElements(ListNode* head, int val) {
while(head != NULL && head->val == val){
ListNode *node = head;
head = node->next;
delete node;
}
ListNode* node = head;
while(node != NULL && node->next != NULL){
if(node->next->val == val) {
ListNode *temp = node->next;
node->next = node->next->next;
delete temp;
}else{
node = node->next;
}
}
return head;
}
};
![在这里插入图片描述](https://img-blog.csdnimg.cn/f8710895b154402084709481e9f9f45b.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5b-D5Lit5peg5aWz5Lq6IOaVsueggeiHqueEtuelnu-8ge-8gQ==,size_11,color_FFFFFF,t_70,g_se,x_16)