annotate 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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
1 package jp.ac.u_ryukyu.ie.cr.jungle.data.list;
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
2
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
3 public class headNode<T> implements Node<T> {
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
4 private final Node<T> next;
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
5
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
6
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
7 public headNode() {
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
8 this.next = new TailNode<>();
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
9 }
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
10
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
11 public headNode(Node<T> next) {
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
12 this.next = next;
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
13 }
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
14
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
15 public Node<T> getNext() {
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
16 return next;
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
17 }
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
18
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
19 public T getAttribute() {
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
20 return null;
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
21 }
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
22
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
23 public Node<T> add(int currentNum, int num, T attribute) {
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
24 if (num == 0) {
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
25 Node<T> newNode = new DefaultNode<>(attribute, next);
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
26 return new headNode<>(newNode);
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
27 }
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
28 Node<T> newNode = next.add(currentNum + 1, num, attribute);
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
29 if (newNode == null)
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
30 return this;
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
31 return new headNode<>(newNode);
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
32 }
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
33
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
34 public Node<T> addLast(T attribute) {
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
35 Node<T> node = next.addLast(attribute);
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
36 return new headNode<>(node);
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
37 }
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
38
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
39 public Node<T> delete(int currentNum, int deleteNum) {
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
40 if (currentNum == deleteNum) {
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
41 return new headNode<>(this.next.getNext());
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
42 }
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
43
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
44 Node<T> newNode = next.delete(currentNum + 1, deleteNum);
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
45 if (newNode == null)
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
46 return this;
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
47 return new headNode<>(newNode);
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
48 }
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
49
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
50 @Override
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
51 public Node<T> replaceNode(int currentNum, int num, T attribute) {
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
52 Node<T> nextNode = getNext();
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
53 Node<T> newNode = nextNode.replaceNode(currentNum, num, attribute);
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
54 if (newNode == null)
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
55 return this;
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
56 return new headNode<>(newNode);
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
57 }
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
58
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
59 @Override
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
60 public int length() {
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
61 return next.length();
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
62 }
44465893e8b8 first Commit
Kazuma
parents:
diff changeset
63 }