删除链表中的节点
删除链表节点—力扣链接
移除链表元素—力扣节点
题目内容: 给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。
输入输出示例:
` 输出: head = [4,5,1,9], val = 5
输入: [4,1,9]
解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9
起源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/shan-chu-lian-biao-de-jie-dian-lcof
著作权归领扣网络所有。商业转载请分割官网受权,非商业转载请注明出处。`
* 1
* 2
* 3
* 4
* 5
* 6
* 7
代码实现
package 移除链表元素;
[url]https://www.douban.com/doulist/136184767/[/url]
[url]https://www.douban.com/doulist/136184768/[/url]
[url]https://www.douban.com/doulist/136184765/[/url]
[url]https://www.douban.com/doulist/136184766/[/url]
[url]https://www.douban.com/doulist/136184762/[/url]
/**
* 力扣网址:https://leetcode-cn.com/problems/remove-linked-list-elements/description/
* 力扣网址:https://leetcode-cn.com/problems/shan-chu-lian-biao-de-jie-dian-lcof/submissions/
*/
class ListNode {
int val;
ListNode next;
ListNode() {}
ListNode(int val) {this.val = val;}
ListNode(int val, ListNode next) {this.val = val; this.next = next;}
}
public class RemoveElements {public static ListNode removeElements(ListNode head, int val) {
// 间接遍历链表,遇到与节点的值雷同的就删除
//1. 首先本人设置一个傀儡头节点
ListNode head1 = new ListNode(0);
//2. 将链表接在傀儡节点的前面
head1.next = head;
//3.pre 是标记节点,因为删除节点的时候,个别要失去删除节点的前一个节点
ListNode pre = head1;
ListNode cur = head;
//4. 开始遍历
while (cur != null){
//5. 遇到雷同的就删除
if (cur.val == val){pre.next = cur.next;}else {//6. 否则就向前面持续遍历
pre = cur;
}
cur = cur.next;// 因为删不删除节点,cur 都会向前面挪动,所以独自写
}
return head1.next;
}
public static void main(String[] args) {// 能够本人结构一个链表进行测试,也能够依据链接去力扣中测试}
}