leetcode之移除链表的元素
题目描述
删除链表中等于给定值 val 的所有节点。
示例:
输入: 1->2->6->3->4->5->6, val = 6
输出: 1->2->3->4->5
题目分析
这里一共两种思路。
第一种思路是建立一个ListNode *cur,这个cur比head慢一步,这样,两个节点同时向前走,当head节点找到val后,这时cur->next=head->next。
第二种思路是将这样的删除运算改成递归运算。
第一种思路源代码:
ListNode* removeElements(ListNode* head, int val) {ListNode *cur = new ListNode(-1);ListNode *dummpy = cur;while(head!=NULL){if(head->val==val){cur->next=head->next;}else{cur->next=head;cur=cur->next;}head=head->next;}return dummpy->next;}
第二种思路源代码:
if (head == null) return null;head.next = removeElements(head.next, val);return head.val == val ? head.next : head;