20
|
1 using UnityEngine;
|
|
2 using System.Collections;
|
|
3 using System;
|
|
4
|
|
5 public class headNode<T> : Node<T>{
|
|
6 private readonly Node<T> next;
|
|
7
|
|
8 public headNode(){
|
|
9 this.next = new TailNode<T> ();
|
|
10 }
|
|
11
|
|
12 public headNode(Node<T> next){
|
|
13 this.next = next;
|
|
14 }
|
|
15
|
|
16 public Node<T> getNext(){
|
|
17 return next;
|
|
18 }
|
|
19
|
|
20 public T getAttribute(){
|
|
21 return default(T);
|
|
22 }
|
|
23
|
|
24 public Node<T> add(int currentNum, int num, T attribute) {
|
|
25 if (num == 0) {
|
|
26 Node<T> newNode = new DefaultNode<T>(attribute, next);
|
|
27 return new headNode<T>(newNode);
|
|
28 }
|
|
29 Node<T> newNodes = next.add(currentNum + 1, num, attribute);
|
|
30 if (newNodes == null) {
|
|
31 return this;
|
|
32 }
|
|
33 return new headNode<T>(newNodes);
|
|
34 }
|
|
35
|
|
36 public Node<T> addLast(T attribute) {
|
|
37 Node<T> node = next.addLast(attribute);
|
|
38 return new headNode<T>(node);
|
|
39 }
|
|
40
|
|
41 public Node<T> delete(int currentNum, int deleteNum) {
|
|
42 if (currentNum == deleteNum) {
|
|
43 return new headNode<T>(this.next.getNext());
|
|
44 }
|
|
45
|
|
46 Node<T> newNode = next.delete(currentNum + 1, deleteNum);
|
|
47 if (newNode == null) {
|
|
48 return this;
|
|
49 }
|
|
50 return new headNode<T>(newNode);
|
|
51 }
|
|
52
|
|
53 public Node<T> replaceNode(int currentNum, int num, T attribute) {
|
|
54 Node<T> nextNode = getNext();
|
|
55 Node<T> newNode = nextNode.replaceNode(currentNum, num, attribute);
|
|
56 if (newNode == null)
|
|
57 return this;
|
|
58 return new headNode<T>(newNode);
|
|
59 }
|
|
60
|
|
61 public int length() {
|
|
62 return next.length();
|
|
63 }
|
|
64
|
|
65 public T getAttribure()
|
|
66 {
|
|
67 throw new NotImplementedException();
|
|
68 }
|
|
69 }
|