一、单向链表
package com.example.demo.algorithm.D002;
/**
* @Description :
* 单向链表
*
* @Author : Darren
* @Date : 2021 年 02 月 08 日 21:53:06
* @since : 1.0
*/
public class Node {
public int value;
public Node next;
public Node(int value) {
this.value = value;
}
}
二、删除
package com.example.demo.algorithm.D002;
/**
* @Description :
* 单向链表和双向链表删除给定值
*
* @Author : Darren
* @Date : 2021 年 02 月 08 日 21:53:06
* @since : 1.0
*/
public class J002_RemoveNode {
public static void main(String[] args) {
int len = 100;
int value = 100;
int num = 80;
Node node = J001_ReverseNode.generateRandomNode(len, value);
Node result = removeNodeValue(node, num);
J001_ReverseNode.printNode(result);
}
public static Node removeNodeValue(Node head, int num){
//head就来到第一个不需要删除的位置
while (head != null){
if (head.value != num){
break;
}
head = head.next;
}
Node pre = head;
Node cur = head;
while (cur != null){
//如果当前的值等于num,那么上一个不等于num的pre直接指向cur的下一个节点
//如果当前的值不等于num,那么上一个不等于num的pre直接指向cur
if (cur.value == num){
pre.next = cur.next;
}else {
pre = cur;
}
//cur跳到下个节点
cur = cur.next;
}
return head;
}
}