单链表的面试题分享

  1、单链表按顺序添加元素

  

 

    代码如下:

 public void  addByOrder(HeroNode node){
        if(headNode.next==null){
            headNode.next=node;
            return;
        }
        HeroNode cur=headNode.next;
        while (true){
            //找到合适的那个位置
            if(cur.next.heroNo>node.heroNo){
                break;
            }
            cur=cur.next;
        }
        //找到合适位置了之后,拆开来
        HeroNode tempNode=cur.next;
        cur.next=node;
        node.next=tempNode;
    }

  2、单链表的反转

  方法一:

  如下图所示:

 

 代码如下:

public void reverse(){
        if(headNode.next==null){
            System.out.println("链表为空");
            return;
        }
        HeroNode reverseHead=new HeroNode("","",0);
        //把链表数据,一个个读取出来,加入到新的链表中。
        HeroNode tempNode=headNode.next;
        while (true){
            if(tempNode.next==null){
                break;
            }
            //每次都加入到最前面。
            HeroNode rsNode=new HeroNode(tempNode.heroName,tempNode.nickName,tempNode.heroNo);
            if(reverseHead.next==null){
                reverseHead.next=rsNode;
            }else{
                HeroNode tempReserveNode=reverseHead.next;
                reverseHead.next=rsNode;
                rsNode.next=tempReserveNode;
            }
            tempNode=tempNode.next;
        }
        headNode.next=reverseHead.next;
    }

 

posted @ 2021-01-15 21:22  GDOUJKZZ  阅读(124)  评论(0编辑  收藏  举报