数据结构---自定义单向链表(Java实现)

单向链表是指每一个节点内存在一个指向下一个节点的指针,java中就是节点存在指向下一个节点的对象引用

下面是Node节点类

public class Node {
    private Object object;
    private Node next;
    
    public Object getObject() {
        return object;
    }
    public void setObject(Object object) {
        this.object = object;
    }
    public Node getNext() {
        return next;
    }
    public void setNext(Node next) {
        this.next = next;
    }

}

单向链表实现类

/**
 * @author wcx
 */
public class LinkedNode {
    private Node head;
    private int nodeIndex = 0;

    public LinkedNode() {
        head = new Node();
    }

    /**
     * 获取下一个元素
     * @return
     */
    public Node next() {
        Node node = select(nodeIndex);
        nodeIndex++;
        return node;
    }
    
    /**
     * 判断是否存在下一个元素
     * @return
     */
    public boolean hasNext() {
        Node select = select(nodeIndex);
        if (select == null)
            return false;
        return select.getNext() != null;
    }

    public void add(Node next) {
        Node last = last();
        last.setNext(next);
    }

    public void delete(int index) {
        int nodeIndex = -1;

        Node node = head;

        while (node.getNext() != null) {
            nodeIndex++;
            if (nodeIndex == index) {
                Node next = node.getNext().getNext();
                node.setNext(next);
            }
            node = node.getNext();

            if (node == null)
                return;
        }
    }

    public Node select(int index) {
        int nodeIndex = -1;

        Node node = head;
        while (node.getNext() != null) {
            if (nodeIndex == index)
                return node;

            node = node.getNext();
            nodeIndex++;
        }
        return null;
    }

    /**
     * 查找到最后一个链表元素
     * @return
     */
    private Node last() {
        Node node = head;
        while (node.getNext() != null)
            node = node.getNext();
        return node;
    }

    
    /**
     * 打印链表信息
     */
    public void printf() {
        if (head.getNext() == null)
            return;
        Node node = head.getNext();

        System.out.println("================begin====================");
        while (node.getNext() != null) {
            System.out.print(node.getObject() + "  ");
            node = node.getNext();
        }
        System.out.println(node.getObject());
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值