comparison src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/data/list/headNode.java @ 0:44465893e8b8

first Commit
author Kazuma
date Wed, 30 Nov 2016 01:47:55 +0900
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:44465893e8b8
1 package jp.ac.u_ryukyu.ie.cr.jungle.data.list;
2
3 public class headNode<T> implements Node<T> {
4 private final Node<T> next;
5
6
7 public headNode() {
8 this.next = new TailNode<>();
9 }
10
11 public headNode(Node<T> next) {
12 this.next = next;
13 }
14
15 public Node<T> getNext() {
16 return next;
17 }
18
19 public T getAttribute() {
20 return null;
21 }
22
23 public Node<T> add(int currentNum, int num, T attribute) {
24 if (num == 0) {
25 Node<T> newNode = new DefaultNode<>(attribute, next);
26 return new headNode<>(newNode);
27 }
28 Node<T> newNode = next.add(currentNum + 1, num, attribute);
29 if (newNode == null)
30 return this;
31 return new headNode<>(newNode);
32 }
33
34 public Node<T> addLast(T attribute) {
35 Node<T> node = next.addLast(attribute);
36 return new headNode<>(node);
37 }
38
39 public Node<T> delete(int currentNum, int deleteNum) {
40 if (currentNum == deleteNum) {
41 return new headNode<>(this.next.getNext());
42 }
43
44 Node<T> newNode = next.delete(currentNum + 1, deleteNum);
45 if (newNode == null)
46 return this;
47 return new headNode<>(newNode);
48 }
49
50 @Override
51 public Node<T> replaceNode(int currentNum, int num, T attribute) {
52 Node<T> nextNode = getNext();
53 Node<T> newNode = nextNode.replaceNode(currentNum, num, attribute);
54 if (newNode == null)
55 return this;
56 return new headNode<>(newNode);
57 }
58
59 @Override
60 public int length() {
61 return next.length();
62 }
63 }