刷第二遍了,这次没看视频,但是看了会网站的文章再刷
1、虚拟头结点
链表题目可以首先想起用“虚拟头结点”,这样在操作原数组头结点时,也能用统一原则去处理,达到用统一原则处理链表全部元素。
2、->
用->表示取值,比如cur->val,表示取当前节点的元素值。
3、删除元素原则
删除元素,先保存当前元素的指针地址,再进行移位和删除操作,比如虚拟头结点的释放:
head=dummyhead->next;
delete dummyhead;
return head;
/**
* 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) {
ListNode*dummyhead=new ListNode(0);
dummyhead->next=head;
ListNode* cur=dummyhead;
while(cur->next!=nullptr){
if(cur->next->val==val){
ListNode* tmp=cur->next;
cur->next=cur->next->next;
delete tmp;
}else{
cur=cur->next;
}
}
head=dummyhead->next;
delete dummyhead;
return head;
}
};