Mercurial > hg > Database > jungle-sharp
view src/main/csharp/jp.ac.u-ryukyu.ie.cr/jungle-network/operations/NetworkNodePath.cs @ 12:b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
author | Kazuma |
---|---|
date | Sun, 23 Oct 2016 12:25:57 +0900 |
parents | |
children | 4c8932dad7b2 |
line wrap: on
line source
using UnityEngine; using System.Collections; using System.Collections.Generic; public class NetworkNodePath : NodePath { LinkedList<int> Path; public NetworkNodePath () { Path = new LinkedList<int>(); Path.AddFirst(-1); } public NetworkNodePath (NodePath path){ Path = new LinkedList<int>(); foreach(int p in path) { Path.AddLast(p); } } private NetworkNodePath (LinkedList<int> path) { this.Path = path; } public IEnumerator<int> iterator () { // iterator error. yield return this.Path.GetEnumerator().Current; } IEnumerator IEnumerable.GetEnumerator() { return this.GetEnumerator(); } public IEnumerator<int> GetEnumerator() { return iterator (); } public NodePath add (int pos) { LinkedList<int> newPath = copyPath(); newPath.AddLast(pos); return new NetworkNodePath(newPath); } public NodePath addHead(int pos) { // still java code. LinkedList<int> newPath = copyPath(); newPath.AddFirst(pos); return new NetworkNodePath(newPath); } public Pair<int, NodePath> pop () { LinkedList<int> cPath = copyPath(); int e = cPath.First.Value; cPath.RemoveFirst(); return new Pair<int, NodePath>(e, new NetworkNodePath(cPath)); } public int size () { return this.Path.Count; } public LinkedList<int> copyPath(){ LinkedList<int> newPath = new LinkedList<int>(); foreach(int i in this.Path) { newPath.AddLast(i); } return newPath; } public override string ToString () { return Path.ToString(); } public NodePath tail() { this.Path.RemoveLast(); return new NetworkNodePath(this.Path); } public Pair<int, NodePath> last () { int lastValue = this.Path.Last.Value; this.Path.RemoveLast(); return new Pair<int, NodePath>(lastValue, new NetworkNodePath(this.Path)); } }