0
点赞
收藏
分享

微信扫一扫

单链表的创建和遍历的分析实现

穿裙子的程序员 2022-02-01 阅读 63

 

//定义一个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 + ", next=" + next + "]";
	}
	
	
	
	
}

 

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){
			System.out.println("链表为空");
			return;
		}
		//因为头结点不能动,因此我们需要一个辅助变量来遍历
		HeroNode temp=head.next;
		while(true){
			if(temp==null){
				break;
			}
			//输出节点的信息
			System.out.println(temp);
			//将temp后移
			temp=temp.next;
		}
		
	}
}

 

public static void main(String[] args) {
		// TODO Auto-generated method stub
		//进行测试
		//先创建节点
		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();
	}
举报

相关推荐

0 条评论