public MyLinkedListWithArbitraryPointer <T> CloneListArbitrary() { MyLinkedListWithArbitraryPointer <T> cur = _list; MyLinkedListWithArbitraryPointer <T> cloned = null; MyLinkedListWithArbitraryPointer <T> clonedCur = null; Queue <MyLinkedListWithArbitraryPointer <T> > set = new Queue <MyLinkedListWithArbitraryPointer <T> >(); while (cur != null) { MyLinkedListWithArbitraryPointer <T> tmp = new MyLinkedListWithArbitraryPointer <T>(cur.Data); if (cloned == null) { cloned = tmp; clonedCur = cloned; } else { clonedCur.Next = tmp; clonedCur = clonedCur.Next; } set.Enqueue(cur.Arbitrary); cur = cur.Next; } clonedCur = cloned; while (clonedCur != null) { clonedCur.Arbitrary = set.Dequeue(); clonedCur = clonedCur.Next; } return(cloned); }
public static void PrintList <T>(MyLinkedListWithArbitraryPointer <T> list) { MyLinkedListWithArbitraryPointer <T> cur = list; Console.Write("Linked List values:\n"); while (cur != null) { Console.Write(cur.Data + " (" + cur.Arbitrary.Data + "), "); cur = cur.Next; } Console.Write("\n"); }
public MyLinkedListWithArbitraryPointer <T> CloneListArbitraryWithNoBuffer() { MyLinkedListWithArbitraryPointer <T> cur = _list; return(null); }
public void SetList(MyLinkedListWithArbitraryPointer <T> list) { _list = list; }