view src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/data/list/headNode.java @ 7:cd5f2ba0f894 default tip

modify jungleTest
author tatsuki
date Thu, 01 Dec 2016 16:23:13 +0900
parents 44465893e8b8
children
line wrap: on
line source

package jp.ac.u_ryukyu.ie.cr.jungle.data.list;

public class headNode<T> implements Node<T> {
    private final Node<T> next;


    public headNode() {
        this.next = new TailNode<>();
    }

    public headNode(Node<T> next) {
        this.next = next;
    }

    public Node<T> getNext() {
        return next;
    }

    public T getAttribute() {
        return null;
    }

    public Node<T> add(int currentNum, int num, T attribute) {
        if (num == 0) {
            Node<T> newNode = new DefaultNode<>(attribute, next);
            return new headNode<>(newNode);
        }
        Node<T> newNode = next.add(currentNum + 1, num, attribute);
        if (newNode == null)
            return this;
        return new headNode<>(newNode);
    }

    public Node<T> addLast(T attribute) {
        Node<T> node = next.addLast(attribute);
        return new headNode<>(node);
    }

    public Node<T> delete(int currentNum, int deleteNum) {
        if (currentNum == deleteNum) {
            return new headNode<>(this.next.getNext());
        }

        Node<T> newNode = next.delete(currentNum + 1, deleteNum);
        if (newNode == null)
            return this;
        return new headNode<>(newNode);
    }

    @Override
    public Node<T> replaceNode(int currentNum, int num, T attribute) {
        Node<T> nextNode = getNext();
        Node<T> newNode = nextNode.replaceNode(currentNum, num, attribute);
        if (newNode == null)
            return this;
        return new headNode<>(newNode);
    }

    @Override
    public int length() {
        return next.length();
    }
}