private static void ResultIterator(DListIterator itr) { for (itr.Start(); itr.Valid(); itr.Forth()) { Console.WriteLine(itr.Item()); } itr.Start(); }
static void Main(string[] args) { // 1 Console.WriteLine("1. List Node"); Console.WriteLine("InsertAfter, InsertBefore\n"); DListNode list = new DListNode(30); list.InsertAfter(50); list.InsertAfter(40); list.InsertBefore(10); list.InsertBefore(20); ResultNodeList(list); // 2 Console.WriteLine("\n///////////////////////////////////////////////"); Console.WriteLine("\n2. Linked List"); Console.WriteLine("Append, Prepend, RemoveHead, RemoveTail\n"); DLinkList linklist = new DLinkList(); linklist.Append(30); linklist.Append(40); linklist.Append(50); linklist.Prepend(20); linklist.Prepend(10); Console.WriteLine("Head is " + linklist.m_head.m_data + " and Tail is " + linklist.m_tail.m_data + "\n"); linklist.RemoveHead(); linklist.RemoveTail(); ResultNodeLinkList(linklist); CheckNullonRemoveNode(linklist); // 3 Console.WriteLine("\n///////////////////////////////////////////////"); Console.WriteLine("\n3. Iterators"); Console.WriteLine("Insert, Remove\n"); Console.WriteLine("The List Contains\n"); DListIterator itr = linklist.GetIterator(); DListNode node = linklist.m_head; linklist.Insert(itr, 25); linklist.Remove(itr, node); ResultIterator(itr); Console.ReadLine(); }
public void Insert(DListIterator p_iterator, int p_data) { if (p_iterator.m_list != this) { return; } if (p_iterator.m_node != null) { p_iterator.m_node.InsertAfter(p_data); if (p_iterator.m_node == m_tail) { m_tail = p_iterator.m_node.m_next; } m_count++; } else { Append(p_data); } }
public void Remove(DListIterator p_iterator, DListNode node) { if (p_iterator.m_list != this) { return; } if (p_iterator.m_node == null) { return; } if (p_iterator.m_node == m_head) { p_iterator.Forth(); RemoveHead(); } else { while (node.m_next != p_iterator.m_node) { node = node.m_next; } p_iterator.Forth(); if (node.m_next == m_tail) { m_tail = node; } node.m_next = null; node.m_next = p_iterator.m_node; } m_count--; }