数据结构之单向链表(添加到尾部)

package com.ws.链表.单向链表.添加到尾;
//注意:在链表遍历时,要从头的下一个开始遍历:Node listNode=head.next;
//                判断是否到链表尾时是判断当前对象当前节点是否为空,以为添加了节点,要是当前节点下一个的话,就是另一个节点了
//                ,而循环时已经指向下一个节点了,这是和添加节点遍历得到链表尾时是不同的
public class LinkedList {
    public static void main(String[] args) {
        //进行测试
        //创建节点
        Node node1=new Node(1,"王","小王");
        Node node2=new Node(2,"李","小李");
        Node node3=new Node(3,"周","小周");
        Node node4=new Node(4,"马","小马");

        //创建链表
        NodeList nodeList=new NodeList();
        //加入
        nodeList.add(node1);
        nodeList.add(node2);
        nodeList.add(node3);
        nodeList.add(node4);

        //显示
        nodeList.list();
    }
}


//定义Node,每个Node对象就是一个节点
class Node{
    public int paixu;
    public String name;
    public String nickname;
    public Node next;//指向下一个节点

    //构造器
    public Node(int paixu,String name,String nickname){
        this.paixu=paixu;
        this.name=name;
        this.nickname=nickname;
    }

    @Override
    public String toString() {
        return "Node{" +
                "paixu=" + paixu +
                ", name='" + name + '\'' +
                ", nickname='" + nickname + '\'' +
                '}';
    }

}

//创建NodeList管理Node  就是管理节点,构建链表
//单项链表
class NodeList{
    //初始化一个头节点,头结点不动
    private Node head=new Node(0,"","");

    //添加节点到单向链表
    //当不考虑编号顺序时
    //1.找到当前链表的最后节点
    //2.将最后节点的next指向新的节点
    public void add(Node node){
        //因为头结点不能动,所以要一个副本
        Node listNode=head;
        //遍历链表找到最后
        while (true){
            //当headtu.next=null找到链表最后
            if (listNode.next==null){
                break;
            }
            //如果没有找到最后,就将节点后移
            listNode=listNode.next;
        }
        //退出while循环时,listNode就指向了链表最后
        listNode.next=node;//将最后节点添加新链表
    }

    //遍历单向链表
    public void list(){
        //判断链表是否为空
        if (head.next==null){
            System.out.println("链表为空");
            return;
        }
        //因为头节点不能动,所以要一个副本来遍历
        Node listNode=head.next;
        while (true){
            //判断是否到链表最后
            if (listNode==null){
                break;
            }
            //链表不为空,输出节点信息
            System.out.println(listNode);
            //将节点后移listNode
            listNode=listNode.next;
        }
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值