双向链表的增删
package com.shilei.dataStructure.linked;
/**
* @author shilei
* @date 2020/4/8-0:05
*/
//双向链表
public class DoubleLinkedNode {
private DoubleLinkedNode pre;
private DoubleLinkedNode next;
private int val;
public DoubleLinkedNode(int val){
this.val=val;
}
//新增一个节点
public void addNode(DoubleLinkedNode node){
DoubleLinkedNode head = this;
while (head.next != null){
head = head.next;
}
head.next=node;
node.pre=head;
}
//删除节点
public void deleteNode(int no){
DoubleLinkedNode head = this;
while (head.next != null && head.val != no){
head = head.next;
}
if(head.next == null && head.val != no){
throw new RuntimeException("没有要删除的节点");
}
head.pre.next=head.next;
head.next.pre=head.pre;
head.pre=null;//方便GC
head.next=null;//方便GC
}
}
本文介绍了一个双向链表的实现,包括节点的添加和删除操作。通过一个DoubleLinkedNode类,演示了如何在链表尾部添加节点以及如何根据值删除指定节点,并确保了内存的正确释放。
721

被折叠的 条评论
为什么被折叠?



