leetcode-203-Remove Linked List Elements
2015-07-16 19:11
399 查看
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
Credits:
Special thanks to @mithmatt for adding this problem and creating all test cases.
删除所有值为val的节点
注意第一个节点和最后一个节点的处理
在head前面加一个节点,便于处理,这样就可以不考虑首尾节点的处理过程。
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
Credits:
Special thanks to @mithmatt for adding this problem and creating all test cases.
删除所有值为val的节点
注意第一个节点和最后一个节点的处理
/** * 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) { if (!head) return NULL; ListNode* pre,*h=head; while (h && h->val == val && h->next){ // 删除在前面所有值为val的节点 h->val = h->next->val ; h->next = h->next->next ; } if (h->val == val) return NULL; // 此时 必定只有一个元素 else { // pre 为 h 前面的节点 pre = h; h = h->next; } while (h) { // 删除值为val的节点 if (h->val == val) { pre->next = h->next; h = h->next; } else { pre = h; h = h->next; } } return head; // 返回头结点 } };
在head前面加一个节点,便于处理,这样就可以不考虑首尾节点的处理过程。
/** * 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* newH; newH->next = head; ListNode* cur = newH; while (cur->next) { if (cur->next->val == val) { cur->next = cur->next->next; } else cur = cur->next; } return newH->next; } };
相关文章推荐
- C/C++之static
- Idea 快捷键大全
- algorithm之unique
- 台大《机器学习基石》课程感受和总结---Part 2 (转)
- 黑马程序员------C语言中交换两个变量的值
- cocos2d-js v3.6.1 扑克弹出,缩回例子
- Linux创建特殊设备文件
- Android串口通信
- MySQL索引背后的之使用策略及优化(高性能索引策略)
- 安卓 主流框架
- asp.net mvc 简单文件下载
- MVC学习笔记(一)
- calendar 当前时间加一天怎么做? java
- Xposed笔记(三)WeChat语音amr数据的hook
- C++之插入迭代器
- 泛型类型与通配符之间的关系
- android菜鸟学习笔记27----Fragment的简单使用
- 又来一波!Android精品源码分享
- linux 清除 命令
- cf 551B 暴力枚举