题目
LeetCode - 203. Remove Linked List Elements
题目链接
https://leetcode.com/problems/remove-linked-list-elements/
参考博客
解题思路
像链表删除节点这类题,头结点和尾节点摘除处理起来比较麻烦,这类可以借鉴以往参考的博客中的一个做法,给链表添加一个无效节点作为头结点(dummy),那么原有的头结点就退化为普通节点,在返回时候返回dummy->next
即可。
解题源码
/**
* 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 *dummpy = new ListNode(val+1);
dummpy->next = head;
ListNode *p = dummpy, *q = p;
while (p->next){
p = p->next;
if (p->val == val){
q->next = p->next;
}else{
q = p;
}
}
return dummpy->next;
}
};
题目
LeetCode - 203. Remove Linked List Elements
题目链接
https://leetcode.com/problems/remove-linked-list-elements/
参考博客
解题思路
像链表删除节点这类题,头结点和尾节点摘除处理起来比较麻烦,这类可以借鉴以往参考的博客中的一个做法,给链表添加一个无效节点作为头结点(dummy),那么原有的头结点就退化为普通节点,在返回时候返回dummy->next即可。
解题源码
/**
- 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 *dummpy = new ListNode(val+1);
dummpy->next = head;
ListNode *p = dummpy, *q = p;
while (p->next){
p = p->next;
if (p->val == val){
q->next = p->next;
}else{
q = p;
}
}
return dummpy->next;
}
};
Markdown 已选中 37 字数 1 行数 当前行 2, 当前列 0 HTML 572 字数 33 段落