欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-06-17 09:07:19
代码优化(基于上一篇博客“数据结构–单链表的创建和遍历”)本次优化主要体现在add方法和list方法上import java.util.Scanner;//单向链表优化public class CircleLinkedListDemo2 { public static void main(String[] args) { SingleLinkedList2 singleLinkedList = new SingleLinkedList2(); boolean...

代码优化(基于上一篇博客“数据结构–单链表的创建和遍历”)
本次优化主要体现在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;
    }
}

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

本文地址:https://blog.csdn.net/xiaoheijjkjkjk/article/details/112223765