链表—按编号的排序单链表修改结点的实现
大家好,我是一名在算法之路上不断前进的小小程序猿!体会算法之美,领悟算法的智慧~
希望各位博友走过路过可以给我点个免费的赞,你们的支持是我不断前进的动力!!
加油吧!未来可期!!!
接着实现按照编号排序的简单单链表,现在对单链表的结点进行修改。实现想法:对于同一编号的结点进行修改结点的内容,实现的过程不是通过先进行删除结点,再插入结点的方式来修改。而是通过创建一个新结点,新结点的编号与要修改的结点编号相同,新结点的内容是修改后的内容。简单来说,就是把新结点的内容更新到要修改结点的内容中去,不对链表进行操作。实现代码如下:
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 + '\'' + '}'; }}
实现效果如下: