0
|
1 using UnityEngine;
|
|
2 using System.Collections;
|
|
3 using System;
|
|
4
|
|
5 public class headNode<T> : Node<T>{
|
|
6 private 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 Node<T> newNode;
|
|
26 if (num == 0) {
|
|
27 newNode = new DefaultNode<T>(attribute, next);
|
|
28 return new headNode<T>(newNode);
|
|
29 }
|
|
30 newNode = next.add(currentNum + 1, num, attribute);
|
|
31 if (newNode == null) {
|
|
32 return this;
|
|
33 }
|
|
34 return new headNode<T>(newNode);
|
|
35 }
|
|
36
|
|
37 public Node<T> addLast(T attribute) {
|
|
38 Node<T> node = next.addLast(attribute);
|
|
39 return new headNode<T>(node);
|
|
40 }
|
|
41
|
|
42 public Node<T> delete(int currentNum, int deleteNum) {
|
|
43 if (currentNum == deleteNum) {
|
|
44 return new headNode<T>(this.next.getNext());
|
|
45 }
|
|
46
|
|
47 Node<T> newNode = next.delete(currentNum + 1, deleteNum);
|
|
48 if (newNode == null) {
|
|
49 return this;
|
|
50 }
|
|
51 return new headNode<T>(newNode);
|
|
52 }
|
|
53
|
|
54 public Node<T> replaceNode(int currentNum, int num, T attribute) {
|
|
55 Node<T> nextNode = getNext();
|
|
56 Node<T> newNode = nextNode.replaceNode(currentNum, num, attribute);
|
|
57 if (newNode == null)
|
|
58 return this;
|
|
59 return new headNode<T>(newNode);
|
|
60 }
|
|
61
|
|
62 public int length() {
|
|
63 return next.length();
|
|
64 }
|
|
65
|
|
66 public T getAttribure()
|
|
67 {
|
|
68 throw new NotImplementedException();
|
|
69 }
|
|
70 }
|