网站做等保是什么意思,wordpress只显示首页,游戏网站建设流程图,单页网站上传教程视频题目
给你一个链表的头节点 head 和一个整数 val #xff0c;请你删除链表中所有满足 Node.val val 的节点#xff0c;并返回 新的头节点 。 示例 1#xff1a; 输入#xff1a;head [1,2,6,3,4,5,6], val 6 输出#xff1a;[1,2,3,4,5] 示例 2#xff1a; 输入…题目
给你一个链表的头节点 head 和一个整数 val 请你删除链表中所有满足 Node.val val 的节点并返回 新的头节点 。 示例 1 输入head [1,2,6,3,4,5,6], val 6 输出[1,2,3,4,5] 示例 2 输入head [], val 1 输出[]
分析
可以先处理掉头结点val的情况然后因为要删除一个结点删除一个结点的时候肯定需要知道被删除结点的上一个结点所以用一个哨兵记录当前结点一个记录上一个结点如果当前结点和val相等那么更新上一个结点的next指针如果不相等那就更新上一个结点
public class LinkNode {int val;LinkNode next;public LinkNode(int data) {this.val data;this.next null;}
}
public class LinkList {LinkNode head;public LinkList() {this.head null;}public LinkNode getHead() {return this.head;}//添加元素public void addNode(int data) {LinkNode node new LinkNode(data);if (this.head null) {this.head node;} else {LinkNode cur this.head;while(cur.next ! null) {cur cur.next;}cur.next node;}}//正序打印public void print(LinkNode node) {while(node ! null) {System.out.print(node.val);System.out.print( );node node.next;}System.out.println();}public void deleteDupl(int val) {LinkNode p this.head;while(this.head ! null this.head.val val) {this.head this.head.next;}if(this.head null) {return;}LinkNode prev this.head;LinkNode cur this.head.next;while(cur ! null) {if(cur.val val) {prev.next cur.next;} else {prev cur;}cur cur.next;}print(this.head);}
}
public class removeLinkedListElements {public static void main(String[] args) {LinkList list new LinkList();list.addNode(1);list.addNode(2);list.addNode(6);list.addNode(3);list.addNode(4);list.addNode(5);list.addNode(6);list.deleteDupl(6);list new LinkList();list.addNode(6);list.addNode(6);list.addNode(6);list.deleteDupl(6);}
}