您的位置:首页 > 其它

Easy-题目51:203. Remove Linked List Elements

2016-05-30 20:50 459 查看
题目原文:

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

题目大意:

删除单链表中指定节点。

题目分析:

用两个指针p和q(p始终是q前驱节点)并行向后推,若找到q是待删除节点(q->val==val)则删除q,但还没有处理头结点,故看一下head->val与val是否相等。

源码:(language:cpp)

class Solution {
public:
ListNode* removeElements(ListNode* head, int val) {
ListNode *p=head;
if(!p || (!p->next && p->val==val))//p is null or (length of linklist=1 and this unique node is going to be deleted)
return NULL;
else {
ListNode *q=head->next;
while(q) {
if(q->val==val) {// the first node is going to be deleted
p->next=p->next->next;
q=q->next;
continue;
}
else {
p=p->next;
q=q->next;
}
}
if(head->val!=val)
return head;
else
return head->next;
}
}
};


成绩:

32ms,beats 54.36%,众数36ms,45.72%.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: