单链表——尾插法

内存布局图👆

 

 

添加节点,有两种方式,第一种是直接添加到链表的尾部

第二种方式是插入到指定位置

第一种方式:

逻辑结构图👆

代码(实现水浒英雄排行榜管理,在添加英雄时,直接添加到链表的尾部)

package com.demo02;

public class SingleLinkedListTest {
	public static void main(String[] args) {
		//先创建节点
		HeroNode hero1=new HeroNode(1,"宋江","及时雨");
		HeroNode hero2=new HeroNode(2,"卢俊义","玉麒麟");
		HeroNode hero3=new HeroNode(3,"吴用","智多星");
		HeroNode hero4=new HeroNode(4,"林冲","豹子头");
		
		//创建一个链表
		SingleLinkedList singleLinkedList=new SingleLinkedList();
		//加入
		singleLinkedList.add(hero1);
		singleLinkedList.add(hero4);
		singleLinkedList.add(hero2);
		singleLinkedList.add(hero3);
		
		//显示
		singleLinkedList.list();
	}

}

//定义SingleLinkedList来管理我们的英雄
class SingleLinkedList{
	//先初始化一个头节点,头节点不要动,不存放具体的数据
	private HeroNode head=new HeroNode(0,"","");
	
	//添加节点到单向链表
	//思路:当不考虑编号的顺序时,1.找到当前链表的最后节点,2.将最后这个节点的next指向新的节点
	public void add(HeroNode heroNode) {
		//因为head节点不能动,因此我们需要一个辅助变量temp
		HeroNode temp=head;
		//遍历链表,找到最后
		while(true) {
			//找到链表的最后
			if(temp.next==null) {
				break;
			}
			//如果没有找到最后,将temp后移
			temp=temp.next;
		}
		//当退出while循环时,temp就指向了链表的最后
		//将最后这个节点的next指向新的节点
		temp.next=heroNode;
	}
	
	//显示链表:遍历
	public void list() {
		//判断链表是否为空
		if(head.next==null) {    //前面设了head.next=HeroNode,虽然HeroNode的值为0、null、null
			System.out.println("链表为空");
			return;
			
		}
		//因为头节点不能动,因此我们需要一个辅助变量来遍历
		HeroNode temp=head.next;
		while(true) {
			//判断是否到链表最后
			if(temp==null) {       //辨别:打印到最后一个节点的时候,temp.next=null
				break;
			}
			//输出节点的信息
			System.out.println(temp);
			//将temp后移
			temp=temp.next;
		}
	}
}


//定义HeroNode,每个HeroNode对象就是一个节点
class HeroNode{
	public int no;
	public String name;
	public String nickname;
	public HeroNode next;//指向下一个节点
	
	public HeroNode(int no,String name,String nickname) {
		this.no=no;
		this.name=name;
		this.nickname=nickname;
	}
	//为了显示方法,我们重写toString
	@Override
	public String toString() {
		return "HeroNode [no=" + no + ", name=" + name + ", nickname=" + nickname + "]";
	}
	
}

temp:

posted @ 2022-03-25 10:14  SherryYuan  阅读(163)  评论(0)    收藏  举报