203. Remove Linked List Elements
- Total Accepted: 89567
- Total Submissions: 291809
- Difficulty: Easy
- Contributors: Admin
Remove all elements from a linked list of integers that have value val.
Example
Given: 1 --> 2 --> 6 --> 3 --> 4 --> 5 --> 6, val = 6
Return: 1 --> 2 --> 3 --> 4 --> 5
对于线性表,学会使用两个指针遍历,然后执行删除,修改等操作
代码:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* removeElements(struct ListNode* head, int val) {
struct ListNode* pre = head; //一个指针作为前结点
struct ListNode* cru = head; //一个指针作为当前结点
if(head == NULL){
return head;
}
while(cru != NULL){
if(head->val == val){
head = head->next;
pre = head;
cru = head;
continue;
} //头节点删除,情况特殊
if(cru->val == val){
pre->next = cru->next;
cru = cru->next; //删除结点需要两步
continue;
}
pre = cru;
cru = cru->next; //循环向后遍历
}
return head;
}