赞
踩
修改节点功能
思路(1) 先找到该节点,通过遍历,(2) temp.name = newHeroNode.name ; temp.nickname= newHeroNode.nickname
HeroNode**
package com.linkedlist; class HeroNode { public int no; public String name; public String nickname; public HeroNode next; //指向下一个节点 //构造器 public HeroNode(int no, String name, String nickname) { this.no = no; this.name = name; this.nickname = nickname; } //为了显示方法,我们重新 toString @Override public String toString() { return "HeroNode [no=" + no + ", name=" + name + ", nickname=" + nickname + "]"; } }
定义 SingleLinkedList 管理我们的英雄
package com.linkedlist; //定义 SingleLinkedList 管理我们的英雄 class SingleLinkedList { //先初始化一个头节点, 头节点不要动, 不存放具体的数据 private HeroNode head = new HeroNode(0, "", ""); //添加节点到单向链表 //思路,当不考虑编号顺序时 //1. 找到当前链表的最后节点 //2. 将最后这个节点的 next 指向 新的节点 public void add(HeroNode heroNode) { //因为 head 节点不能动,因此我们需要一个辅助遍历temp HeroNode temp = head; //遍历链表,找到最后 while (true) { //找到链表的最后 if (temp.next == null) { // break; } //如果没有找到最后, 将将 temp 后移 temp = temp.next; } //当退出 while 循环时,temp 就指向了链表的最后 //将最后这个节点的 next 指向 新的节点 temp.next = heroNode; } //第二种方式在添加英雄时,根据排名将英雄插入到指定位置 //(如果有这个排名,则添加失败,并给出提示) public void addByOrder(HeroNode heroNode) { //因为头节点不能动,因此我们仍然通过一个辅助指针(变量)来帮助找到添加的位置 // 因为单链表,因为我们找的 temp 是位于 添加位置的前一个节点,否则插入不了 HeroNode temp = head; boolean flag = false; // flag 标志添加的编号是否存在,默认为 false while(true) { if(temp.next == null) { //说明 temp 已经在链表的最后 break; // } if(temp.next.no > heroNode.no) { //位置找到,就在 temp 的后面插入 break; } else if (temp.next.no == heroNode.no) { //说明希望添加的 heroNode 的编号已然存在 flag = true; //说明编号存在 break; } temp = temp.next; //后移,遍历当前链表 } //判断 flag 的值 if(flag) { //不能添加,说明编号存在 System.out.printf("准备插入的英雄的编号 %d 已经存在了, 不能加入\n", heroNode.no);
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。