using System; using System.Collections.Generic; using System.Text; namespace ElementalGame { public class LLNode { public GameObject gameObject; public LLNode next; public override bool Equals(LLNode) { //if(this.gameObject return false; } } public class LL { LLNode first; LLNode last; public LL() { } public void Add(GameObject gameObject) { LLNode node = new LLNode(); node.gameObject = gameObject; Add(node); } public void Add(LLNode node) { if (first == null) { first = node; last = first; } else { node.next = first; first = node; } } public void Remove(GameObject node) { LLNode curr = new LLNode(); curr.next = first; // Go to position right before node while (curr.next != node && curr.next.next != null) { curr = curr.next; } // If next is the last node in list and equal to node if (curr.next.next == null && curr.next == node) { curr.next = null; last = curr; } else if (curr.next.next != null && curr.next == node) { // Relink skipping node curr.next = curr.next.next; } } public LL Concatenate(LL list1, LL list2) { list1.last.next = list2.first; return list1; } public bool Contains(GameObject node) { LLNode curr = first; while (curr != null) { if (curr == node) { return true; } curr = curr.next; } return false; } } }