单向链表查找的方向只能是一个方向,而双向链表可以向前或者向后查找。
结合 JAVA 实现带头结点的链表根据节点大小按顺序新增、修改、删除节点 单向链表的操作。在单向链表的基础上进行双向链表的增删改就比较简单了。
根据上图,分析双向链表的新增,修改、删除操作思路:
1) 遍历 方和 单链表一样,可以向前查找,也可以向后查找。本文使用向后查找的方式遍历 双向链表。
2) 添加 (按照节点的大小顺序插入到双向链表中)
(1) 先通过遍历,找到双向链表中比新节点大的节点。如果找到链表中已存在要添加的新节点,则提示不能添加
(2)反之,则新节点的下个节点即为当前节点的下个节点 newHeroNode.next = temp.next;
(3)当前节点的下个节点为新节点 temp.next = doubleNode;新节点的前一节点为当前节点:doubleNode.previous = temp;
3) 修改 思路和 原单向链表的修改思路一样.找到双向链表中相同编号的节点,并直接修改
4) 删除节点
(1) 首先要设置一个temp节点,使用while循环遍历双向链表,查找到要删除的节点。
(2) 找到要删除的节点后,设置被删除节点的前一个节点的next 为 被删除节点的next。
(3) 如果被删除节点的next不为空,则被删除节点的下个节点的previous为被删除节点的前一个节点temp.next.previous = temp.previous。
代码实现
1、先创建一个DoubleNode对象,即链表中的节点对象
class DoubleNode{
public int no;
public String name;
public String nickName;
public DoubleNode next;
public DoubleNode previous;
public DoubleNode(int no,String name,String nickName){
this.no = no;
this.name = name;
this.nickName = nickName;
}
@Override
public String toString() {
return "DoubleNode{" + &#