本文主要是介绍java实现单向链表的删除,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目如下:
给定单向链表的头指针和一个节点指针,定义在一个函数在O(1)时间内删除该节点。
public class ListNode {ListNode next;int value;public ListNode(int value){this.value = value;}}
测试类如下:
public class LinkTest {public static void main(String[] args) {ListNode node1 = new ListNode(1);ListNode node2 = new ListNode(4);ListNode node3 = new ListNode(5);ListNode node4 = new ListNode(6);ListNode node5 = new ListNode(7);node1.next = node2;node2.next = node3;node3.next = node4;node4.next = node5;deleteNode(node1,node2);while (node1 != null){System.out.println(node1.value + ",");node1 = node1.next;}}//node1表示头节点,node2表示要删除的节点private static void deleteNode(ListNode node1, ListNode node2){if(node1 == null || node2 == null){return;}ListNode preNode = node1;if(preNode.next == null){while (preNode.next != node2){preNode = preNode.next;}preNode.next = null;}else{/*** 我们直接让删除节点的值等于删除节点的下一个节点值* 再将删除节点的next赋值为删除节点的.next.next 起到间接删除的效果*/node2.value = node2.next.value;node2.next = node2.next.next;}}}
这篇关于java实现单向链表的删除的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!