数据结构--单链表的创建和遍历(代码优化)
程序员文章站
2022-03-07 11:06:30
代码优化(基于上一篇博客“数据结构–单链表的创建和遍历”)本次优化主要体现在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