0
|
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 }
|