数据结构--单链表的创建和遍历(代码优化)

代码优化(基于上一篇博客“数据结构–单链表的创建和遍历”)
本次优化主要体现在add方法和list方法上

import java.util.Scanner;

//单向链表优化
public class CircleLinkedListDemo2 {
     
    public static void main(String[] args) {
     
        SingleLinkedList2 singleLinkedList = new SingleLinkedList2();
        boolean tar = true;
        while(tar){
     
            System.out.println("请选择你要执行的操作,add:往链表中添加数据  show:遍历整个链表 quit:退出程序");
            Scanner sc = new Scanner(System.in);
            String str = sc.next();
            switch(str){
     
                case "add" :
                    System.out.println("请输入新节点的序号:");
                    int no = sc.nextInt();
                    System.out.println("请输入新节点的名字:");
                    String name = sc.next();
                    System.out.println("请输入新节点的昵称:");
                    String nickName = sc.next();
                    HeroNode2 newNode = new HeroNode2(no, name, nickName);
                    singleLinkedList.add2(newNode);
                    break;

                case "show" :
                    singleLinkedList.list2(singleLinkedList.head.next);
                    break;

                case "quit" :
                    tar = false;
                    break;
            }
        }
    }
}


//定义SingleLinkedList,管理我们的英雄
class SingleLinkedList2{
     

    //先初始化一个头节点,头节点不要动,不存放具体的数据
    public HeroNode2 head = new HeroNode2(0,"","");

    // 因为head节点不能动,因此我们需要一个辅助遍历temp
    public HeroNode2 temp = head;

    public int count = 0;

    //优化add方法:不用每次都从链表头节点开始遍历找到链表的最后节点
    //每次往链表最后加完节点后,temp则指向链表的最后节点
    public void add2(HeroNode2 heroNode){
     
        count++;
        if(count == 1){
     
            head.next = heroNode;
        }
        temp.next = heroNode;
        temp = heroNode;
    }



    //优化list方法,采用 递归 来遍历链表
    public void list2(HeroNode2 headNext){
     
        if(head.next == null){
     
            throw new RuntimeException("链表为空,没有数据,请先添加数据再打印");
        }
        System.out.println("序号:"+headNext.no);
        System.out.println("姓名:"+headNext.name);
        System.out.println("昵称:"+headNext.nickName);
        System.out.println("-----------------------------------");

        if(headNext.next != null){
     
            list2(headNext.next);  //递归
        }
    }
}



//定义HeroNode,每个HeroNode 对象就是个一个节点
class HeroNode2{
     

    public int no;

    public String name;

    public String nickName;

    public HeroNode2 next;  //指向下一个节点

    //构造器
    public HeroNode2(int no, String name, String nickName){
     
        this.no = no;
        this.name = name;
        this.nickName = nickName;
    }
}

结果截图:
数据结构--单链表的创建和遍历(代码优化)_第1张图片
数据结构--单链表的创建和遍历(代码优化)_第2张图片
数据结构--单链表的创建和遍历(代码优化)_第3张图片

你可能感兴趣的:(java,链表,数据结构,后端)