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 };
知识兔