1、思路:
本人已经感觉到双指针的无敌了!!
- 建立头节点phead和指向头节点的指针p,为了解决单链表找不到上一个结点的问题
- 结束条件为head!=NULL,比较head和val的值,删除重复的元素
- p->next=head->next;head=head->next
2、图解
3、代码实现
1 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * int val; 5 * ListNode *next; 6 * ListNode(int x) : val(x), next(NULL) {} 7 * }; 8 */ 9 class Solution { 10 public: 11 ListNode* removeElements(ListNode* head, int val) { 12 ListNode *phead,*p; 13 phead=new ListNode(0); 14 phead->next=head; 15 p=phead; 16 while(head!=NULL){ 17 if(head->val!=val){ 18 head=head->next; 19 p=p->next; 20 } 21 else{ 22 p->next=head->next; 23 head=head->next; 24 } 25 } 26 return phead->next; 27 } 28 };