コード例 #1
0
        public void AddItem(int insertValue, Position position, int index = 0)
        {
            DoubleNodes node = new DoubleNodes();

            node.value = insertValue;
            AddtoList(node, position, index);
        }
コード例 #2
0
        public void PrintAllReverse()
        {
            DoubleNodes current = Tail;

            Console.WriteLine("PRINT ALL DOUBLE LINKED LIST IN REVERSE");
            while (current != null)
            {
                Console.WriteLine(current.value);
                current = current.PreviousValue;
            }
        }
コード例 #3
0
        public void PrintAllList()
        {
            DoubleNodes current = Head;

            Console.WriteLine("PRINT ALL DOUBLE LINKED LIST");
            while (current != null)
            {
                Console.WriteLine(current.value);
                current = current.NextValue;
            }
        }
コード例 #4
0
 private void RemoveFromList(Position removePosition, int index)
 {
     if (removePosition == Position.BEGIN)
     {
         var nextItemAfterHead = Head.NextValue;
         nextItemAfterHead.PreviousValue = null;
         Head = nextItemAfterHead;
         listCount--;
     }
     else if (removePosition == Position.END)
     {
         for (DoubleNodes node = Head; node != null; node = node.NextValue)
         {
             if (node.NextValue.NextValue == null)
             {
                 Tail           = node;
                 node.NextValue = null;
                 listCount--;
                 break;
             }
         }
     }
     else if (removePosition == Position.MIDDLE)
     {
         if (index <= listCount)
         {
             int         counter = 0;
             DoubleNodes current = Head;
             while (current != null)
             {
                 if (counter + 1 == index)
                 {
                     var movingNode = current.NextValue.NextValue;
                     current.NextValue        = movingNode;
                     movingNode.PreviousValue = current;
                     break;
                 }
                 current = current.NextValue;
                 counter++;
             }
         }
         else
         {
             Console.WriteLine("Incorrect Index");
         }
     }
 }
コード例 #5
0
        private void AddtoList(DoubleNodes item, Position addPosition, int index)
        {
            if (Head == null)
            {
                Head      = item;
                Tail      = item;
                listCount = 1;
            }
            else
            {
                if (addPosition == Position.END)
                {
                    DoubleNodes previousNode = null;
                    for (DoubleNodes node = Head; node != null; node = node.NextValue)
                    {
                        if (node.NextValue == null)
                        {
                            item.PreviousValue = node;
                            node.NextValue     = item;
                            Tail = item;
                            listCount++;
                        }
                    }
                }
                else if (addPosition == Position.BEGIN)
                {
                    var oldHeadItem = Head;
                    oldHeadItem.PreviousValue = item;
                    item.NextValue            = oldHeadItem;
                    Head = item;
                    listCount++;
                }
                else if (addPosition == Position.MIDDLE)
                {
                    if (index <= listCount)
                    {
                        int         counter = 0;
                        DoubleNodes current = Head;
                        while (current != null)
                        {
                            if (counter + 1 == index)
                            {
                                var movingNode = current.NextValue;
                                movingNode.PreviousValue = item;

                                item.PreviousValue = current;
                                item.NextValue     = movingNode;

                                current.NextValue = item;
                                break;
                            }
                            current = current.NextValue;
                            counter++;
                        }
                    }
                    else
                    {
                        Console.WriteLine("Incorrect Index");
                    }
                }
            }
        }