我的伟大航路(7)

今天的内容是单链表

单链表之前写过,不过那是之前一套视频的讲法,其中我觉得node节点写的很好,因为他可以很好的提醒了我们,可以用链表来实现对对象的管理,同时也开了先河,这提醒了我们,可以根据需要自定义一个节点,甚至每一个节点,然后链表成为一个大链表的节点,而我新找到的这套视频,仅以一个整数来表示内容,这无疑是更简单明了的

先上node节点的代码,定义了这个节点有两个属性,一个存放date的整数数据,一个是下一个节点(可以理解为下一个节点的地址)

public class Node {
    //节点内容
    int date;
    //下一个节点
    Node next;

    //构造方法
    public Node(int date) {
        this.date = date;
    }

下面是追加节点(这里是我觉得最有意思的地方了,以前再使用StringBuild的时候用过append,觉得好神奇,现在理解了)

    //为节点追加节点
    public Node append(Node node) {//参数为需要追加的节点
        Node nowNode = this;//当前节点为本节点(当前节点为再下面循环中指向的节点)(本节点为需要追加节点的节点)
        while (true) {
            Node nextNode = nowNode.next();//下一个节点是当前节点的下一个节点
            if (nextNode == null)//如果当前节点的下一个节点空
                break;//结束循环
            nowNode = nextNode;//因为当前节点的下一个节点不空,所以把当前节点变成下一个节点
        }
        nowNode.next = node;//找到当前节点的下一个节点为空时,将当前节点的下一个节点赋值参数传来的node
        return nowNode;//返回当前节点的优点可以,连续追加
    }
    }

下面一段代码与node节点的构成无关,是为了更好的理解连续追加

		Node n1 = new Node(1);
        Node n2 = new Node(2);
        Node n3 = new Node(3);
        Node n4 = new Node(4);
        n1.append(n2).append(n3).append(n4);

还可以加入更多的方法,例如删除节点,插入节点等都是对next的操作,这里不再仔细写了

下面是完整代码

package demo2;

/**
 * @program: ForStudyDataStruct
 * @description:
 * @author: 张成灬玺
 * @create: 2020-01-28 20:30
 ***/
public class Node {
    //节点内容
    int date;
    //下一个节点
    Node next;

    //构造方法
    public Node(int date) {
        this.date = date;
    }

    //为节点追加节点
    public Node append(Node node) {//参数为需要追加的节点
        Node nowNode = this;//当前节点为本节点(当前节点为再下面循环中指向的节点)(本节点为需要追加节点的节点)
        while (true) {
            Node nextNode = nowNode.next();//下一个节点是当前节点的下一个节点
            if (nextNode == null)//如果当前节点的下一个节点空
                break;//结束循环
            nowNode = nextNode;//因为当前节点的下一个节点不空,所以把当前节点变成下一个节点
        }
        nowNode.next = node;//找到当前节点的下一个节点为空时,将当前节点的下一个节点赋值参数传来的node
        return nowNode;//返回当前节点的优点可以,连续追加
    }

    //删除节点
    public void removeNode(int date) {

    }

    //插入节点
    //获取下一个节点
    public Node next() {
        return this.next;
    }

    //判定是否为最后一个节点
    public boolean isLastNode() {
        return this.next == null;
    }

    //获取节点数据
    public int getDate() {
        return this.date;
    }
}

奥,对了今天还学了栈和队列,忘了,我还寻思一晚上就学这么点东西呢
明天一起补充上

希望只在一瞬之间,而黑暗,永恒。
——孤影墨香

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值