标签:删除链表 ini pre style turn move 指针 efi 目标
题目:
请编写一个函数,使其可以删除某个链表中给定的(非末尾的)节点,您将只被给予要求被删除的节点。 比如:假设该链表为 1 -> 2 -> 3 -> 4 ,给定您的为该链表中值为 3 的第三个节点,那么在调用了您的函数之后,该链表则应变成 1 -> 2 -> 4 。
1.解题思路:
找到目标节点的前一个节点即可。然后将前节点的next指针指向后节点的next节点。
代码如下:
/** * 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* pList = head; ListNode* pre = NULL; if(head == NULL){ return NULL; } while(pList!=NULL){ if(pList->val == val){ if(pre == NULL){ head = pList->next; }else{ pre->next = pList->next; } }else{ pre = pList; //pList = pList->next; } pList = pList->next; } return head; } };
标签:删除链表 ini pre style turn move 指针 efi 目标
原文地址:https://www.cnblogs.com/mikemeng/p/8984931.html