您的位置:首页 > 其它

Remove Linked List Elements [leetcode]

2015-05-29 09:53 274 查看

Remove Linked List Elements

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

题意:

删除给定的节点

解题思路:

1.考虑头结点等于给定节点并需要删除的情况,此时头结点指针需要向前移动。

2.考虑中间节点等于给定值并需要删除的情况,此时删除该节点并释放资源,同时节点指针移动到下一个节点。

实现代码如下:

/**
* Definition for singly-linked list.
* struct ListNode {
*     int val;
*     struct ListNode *next;
* };
*/
struct ListNode* removeElements(struct ListNode* head, int val) {
struct ListNode *p,*p1,*temp;
if(head == NULL) return head;
p = head;

while(p != NULL && p->val == val){//当头结点值==val的情况
temp = p;
p = p->next;
temp = NULL;
}
p1 = p;
head = p;//保留头结点指针
while(p != NULL){//当链表中有值==val的情况
if(p->val == val){
temp = p;
p1->next = p->next;
p = p->next;
temp = NULL;
}else{
p1 = p;
p = p->next;
}
}
return head;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: