> 文档中心 > 链表—按编号的排序单链表修改结点的实现

链表—按编号的排序单链表修改结点的实现

大家好,我是一名在算法之路上不断前进的小小程序猿!体会算法之美,领悟算法的智慧~

希望各位博友走过路过可以给我点个免费的赞,你们的支持是我不断前进的动力!!

加油吧!未来可期!!!

接着实现按照编号排序的简单单链表,现在对单链表的结点进行修改。实现想法:对于同一编号的结点进行修改结点的内容,实现的过程不是通过先进行删除结点,再插入结点的方式来修改。而是通过创建一个新结点,新结点的编号与要修改的结点编号相同,新结点的内容是修改后的内容。简单来说,就是把新结点的内容更新到要修改结点的内容中去,不对链表进行操作。实现代码如下:
package linkedlist;/*  heroNode.no){//位置找到,就在temp的后面插入  break;     }else if(temp.next.no == heroNode.no){//说明希望添加的heroNode的编号已然存在  flag = true;  break;     }     //temp.next.no < heroNode.no     temp = temp.next; } //判断flag 的值 if(flag){     System.out.printf("将插入的结点已经存在,该结点为%d 无法插入",heroNode.no); }else{//插入结点     heroNode.next = temp.next;     temp.next = heroNode; }    }    //修改结点信息,根据no来进行修改,不改变no的编号    //说明    //1. 根据 newHeroNode 的 no 来修改即可    public void update(HeroNode newheroNode){ //判断链表是否为空 HeroNode temp = head; if(head.next == null){     System.out.println("该链表为空,无法进行修改");     return; } // while(true){ // if(temp.next == null){ // break; // } // if(temp.next.no =! newheroNode.no){ // temp = temp.next; // } // if(temp.next.no == newheroNode.no){ // newheroNode.next = temp.next; // temp.next = newheroNode; // break; // } // } boolean flag = false; while(true){     if(temp.next == null){  break; //已经遍历完链表     }     if(temp.next.no == newheroNode.no){  flag = true;  break;//找到结点     }     temp = temp.next; } //根据flag 判断是否找到要修改的节点 if(flag){     // newheroNode.next = temp.next;     // temp.next = newheroNode;     temp.next.name = newheroNode.name;     temp.next.nickname = newheroNode.nickname; }else{     //没有找到     System.out.printf("没有找到 编号 %d 的节点,不能修改\n", newheroNode.no); }    }    //遍历显示链表    public void list(){ //判空 if(head.next == null){     System.out.println("链表为空");     return; } HeroNode temp = head.next; while(true) {     //找到链表的最后     if (temp == null) {  break;     }     System.out.println(temp);     temp = temp.next; }    }}//定义HeroNode , 每个HeroNode 对象就是一个节点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;    }    @Override    public String toString() { return "HeroNode{" +  "no=" + no +  ", name='" + name + '\'' +  ", nickname='" + nickname + '\'' +  '}';    }}

实现效果如下: