【数据结构与算法】单链表 ----节点的修改、删除



单链表的操作

节点的修改

在这里插入图片描述

  • 在之前创建好链表的基础上,我们对其中的节点进行修改:编号不变,英雄名称和昵称可以改变

  • 主要的思路就是,通过修改方法传入新的节点(节点编号任意),若节点编号与已存在的节点相等,进行修改;否则,不好修改。

    //进行节点的修改 ---- 根据no编号进行
    public void update(HeroNode newHeroNode){
    
    
        if (head.next==null){
    
    
            System.out.println("链表为空!");
            return;
        }
        // 构建辅助节点
        HeroNode temp = head.next;
        boolean flag = false; // 表示节点的编号是否存在
        while (true){
    
    
            if (temp==null){
    
    
                break;  // 链表遍历结束
            }
            // 节点编号存在
            if (temp.no == newHeroNode.no){
    
    
                 flag = true;
                 break;
            }
            temp = temp.next;
        }
        // 根据flag判断是否修改
        if (flag){
    
    
            temp.name = newHeroNode.name;
            temp.nickName = newHeroNode.nickName;
        } else {
    
    
            System.out.printf("没有找到编号为%d的英雄!",newHeroNode.no);
        }
    }

测试

// 输出链表
singleLinkedList.showList();
// 修改节点
singleLinkedList.update(new HeroNode(5,"阿逵","小逵逵"));
// 输出链表
singleLinkedList.showList();

在这里插入图片描述
在这里插入图片描述

返回顶部


节点的删除

在这里插入图片描述
节点的删除,意味着链表中间的next域连续指向的断裂,所以我们要将next域重新从删除的节点处连接起来。如上图所示,假设我们要删除数据4节点,由于原来数据4的next域指向数据7,数据1的next域指向数据4,所以现在我们要将数据1的next域指向数据7。

主要思路:

  • 1.head头部节点依然不能动,同样是借助temp辅助节点
  • 2.在比较的时候将temp.next.no要被删除的节点的no进行比较。
// 删除节点
public void delete(int no){
    
    
    // 创建辅助节点
    HeroNode temp = head;
    boolean flag = false; // 代表是否找到要删除的节点
    while (true){
    
    
        if (temp.next == null){
    
    
            break;
        }
        if (temp.next.no == no){
    
    
            flag = true;
            break;
        }
        temp = temp.next;
    }
    // 判断是否找到
    if (flag){
    
    
        temp.next = temp.next.next;
    } else {
    
    
        System.out.printf("没有找到要删除编号为%d的节点\n",no);
    }
}
// 删除节点
singleLinkedList.delete(5);
singleLinkedList.showList();
singleLinkedList.delete(5);
singleLinkedList.showList();

测试
在这里插入图片描述
在这里插入图片描述

返回顶部


猜你喜欢

转载自blog.csdn.net/qq_45797116/article/details/113702603