Java单链表删除指定值节点算法实现及代码示例
public class ListNode {
int val;
ListNode next;
public ListNode(int val) {
this.val = val;
this.next = null;
}
}
public class LinkedList {
ListNode head;
public LinkedList() {
this.head = null;
}
// 添加结点
public void addNode(int val) {
ListNode newNode = new ListNode(val);
if (head == null) {
head = newNode;
} else {
ListNode curr = head;
while (curr.next != null) {
curr = curr.next;
}
curr.next = newNode;
}
}
// 删除值为x的结点
public void deleteNode(int x) {
if (head == null) {
return;
}
// 处理头结点为x的情况
while (head != null && head.val == x) {
head = head.next;
}
ListNode curr = head;
ListNode prev = null;
while (curr != null) {
if (curr.val == x) {
prev.next = curr.next;
} else {
prev = curr;
}
curr = curr.next;
}
}
// 打印链表
public void printList() {
ListNode curr = head;
while (curr != null) {
System.out.print(curr.val + ' ');
curr = curr.next;
}
System.out.println();
}
}
public class Main {
public static void main(String[] args) {
LinkedList list = new LinkedList();
list.addNode(1);
list.addNode(2);
list.addNode(2);
list.addNode(3);
list.addNode(1);
System.out.print('Original List: ');
list.printList();
int x = 2;
list.deleteNode(x);
System.out.print('List after deleting ' + x + ': ');
list.printList();
}
}
输出:
Original List: 1 2 2 3 1
List after deleting 2: 1 3 1
原文地址: https://www.cveoy.top/t/topic/pgUJ 著作权归作者所有。请勿转载和采集!