Beispiel #1
0
 private static void ResultIterator(DListIterator itr)
 {
     for (itr.Start(); itr.Valid(); itr.Forth())
     {
         Console.WriteLine(itr.Item());
     }
     itr.Start();
 }
Beispiel #2
0
        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();
        }
Beispiel #3
0
        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);
            }
        }
Beispiel #4
0
        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--;
        }