首页 > 其他 > 详细

单链表的实现

时间:2020-08-31 21:01:02      阅读:86      评论:0      收藏:0      [点我收藏+]
public class SingleLinkList {
    private HeroNode head=new HeroNode(-1,"");

    public void addNode(HeroNode heroNode){
        HeroNode temp=head;
        while (true){
            if(temp.getNext()==null){
                break;
            }
            temp=temp.getNext();
        }
        temp.setNext(heroNode);
    }

    public void delNode(HeroNode heroNode){
        HeroNode temp=head;
        while (true){
            if(temp.getNext()==null){
                break;
            }
            if(temp.getNext()==heroNode){
                HeroNode next = temp.getNext();
                temp.setNext(next.getNext());
                next.setNext(null);
                break;
            }
            temp=temp.getNext();
        }
    }
    public void modifyNode(HeroNode oldNode,HeroNode newNode){
        HeroNode temp=head;
        while (true){
            if(temp.getNext()==null){
                break;
            }
            if(temp.getNext()==oldNode){
                newNode.setNext(oldNode.getNext());
                oldNode.setNext(null);
                temp.setNext(newNode);
                break;
            }
            temp=temp.getNext();
        }
    }
    public void printList(){
        HeroNode temp=head.getNext();
        while (true){
            if(temp==null){
                break;
            }
            System.out.println(temp);
            temp=temp.getNext();
        }
    }

    //--------------------- 更新编号来更新---------------------

   public void addNodeByNo(HeroNode heroNode){
        HeroNode temp=head;
        boolean update=false;
        while (true) {
            if(temp.getNext()==null){
                break;
            }
            if(temp.getNext().getNo()>heroNode.getNo()){
                break;
            }
            if(temp.getNext().getNo()==heroNode.getNo()){
                //更新
                update=true;
                break;
            }
            temp=temp.getNext();

        }
        if(update){
            HeroNode next = temp.getNext();
            temp.setNext(heroNode);
            heroNode.setNext(next.getNext());
            next.setNext(null);
            return;
        }
        if(temp.getNext()==null){
            temp.setNext(heroNode);
            return;
        }
        HeroNode next = temp.getNext();
        temp.setNext(heroNode);
        heroNode.setNext(next);


   }

   public void delNodeByNo(int no){
        HeroNode temp=head;
        boolean del=false;
        while (true){
            if(temp.getNext()==null){
                break;
            }
            if(temp.getNext().getNo()==no){
                del=true;
                break;
            }
            temp=temp.getNext();
        }

        if(del){
            HeroNode next = temp.getNext();
            temp.setNext(next.getNext());
            next.setNext(null);
        }

   }
   public void updateByNo(HeroNode newHero){
        HeroNode temp=head;
        boolean update=false;
        while (true){
            if(temp.getNext()==null){
                break;
            }
            if(temp.getNext().getNo()==newHero.getNo()){
                update=true;
                break;
            }
            temp=temp.getNext();
        }
        if(update){
            HeroNode next = temp.getNext();
            temp.setNext(newHero);
            newHero.setNext(next.getNext());
            next.setNext(null);
        }

   }


    public static void main(String[] args) {
        HeroNode hao = new HeroNode(4, "hao");
        HeroNode ming = new HeroNode(2, "ming");
      /*  HeroNode xiao = new HeroNode(1, "xiao");
        HeroNode hao = new HeroNode(4, "hao");
        HeroNode ming = new HeroNode(2, "ming");
        SingleLinkList linkList = new SingleLinkList();
        linkList.addNode(xiao);
        linkList.addNode(hao);
        linkList.addNode(ming);
       // linkList.addNode();
        //linkList.addNode(new HeroNode("3","ni"));
        //linkList.addNode(hao);
        linkList.printList();
        System.out.println("............................");
      *//*  linkList.delNode(hao);
        linkList.delNode(xiao);
        linkList.printList();*//*
        linkList.modifyNode(ming,new HeroNode(99,"ddd"));*/
        SingleLinkList linkList = new SingleLinkList();
        linkList.addNodeByNo(hao);
        linkList.addNodeByNo(ming);
        linkList.addNodeByNo(new HeroNode(2,"鱼"));
        linkList.delNodeByNo(2);
        linkList.updateByNo(new HeroNode(4,"ppp"));
        linkList.printList();
    }
}


public class HeroNode {
    private int no;
    private String name;
    private HeroNode next;

    public HeroNode(int no, String name) {
        this.no = no;
        this.name = name;
    }

    public HeroNode getNext() {
        return next;
    }

    public void setNext(HeroNode next) {
        this.next = next;
    }

    @Override
    public String toString() {
        return "HeroNode{" +
                "no=‘" + no + ‘\‘‘ +
                ", name=‘" + name + ‘\‘‘ +
                ‘}‘;
    }

    public int getNo() {
        return no;
    }

    public void setNo(int no) {
        this.no = no;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

 

单链表的实现

原文:https://www.cnblogs.com/yangxiaohui227/p/13591566.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!