链表的修改和删除

链表的修改和删除

修改思路

  1. 先找到该节点,通过遍历

  2. temp.name=newHeroNode.name;temp.nickname=newHeroNode.nickname

代码实现

//修改节点的信息,根据no编号来修改,但是不能修改no,否则就变成了添加
/*
 * 根据newHeroNode的no进行修改
 * */
public void update(HeroNode newHeroNode) {
    if (head.next == null) {
        System.out.println("链表为空");
        return;
    }
    HeroNode temp = head.next;
    while (true) {
        if (temp == null) {
            break;// 已经遍历完链表
        }
        if (temp.no == newHeroNode.no) {
            // 找到需要修改的节点
            temp.name = newHeroNode.name;
            temp.nickname = newHeroNode.nickname;
        }
        temp = temp.next;
    }
}
​
// 在main方法中对以上代码进行测试
// 测试修改代码
        HeroNode newHeroNode = new HeroNode(2, "小卢", "玉麒麟~~~");
        singleLinkedList.update(newHeroNode);
        System.out.println("修改后的链表情况");
        singleLinkedList.show();

删除节点

思路

  1. 我们先找到要删除节点的前一个节点temp

  2. temp.next=temp.next.next

  3. 被删除的节点,将不会有其他引用指向,会被垃圾回收机制回收

代码实现

// 删除
public void remove(int no) {
    HeroNode temp = head;
    while (true) {
        if (temp.next == null) {
            break;
        }
        if (temp.next.no == no) {// 找到了要删除的节点的前一个节点
            temp.next = temp.next.next;
            break;
        }
        temp = temp.next;
    }
}
​
// 对以上代码进行测试
 // 删除
        singleLinkedList.remove(1);
        singleLinkedList.remove(4);
        singleLinkedList.remove(2);
        System.out.println("删除后的链表情况");
        singleLinkedList.show();

你可能感兴趣的:(java,链表,数据结构)