예제 #1
0
        //метод, извлекающий элемент из начала неизменяемой очереди и возвращающий новую очередь
        public ImmQueue <T> Dequeue()
        {
            ImmQueue <T>       temp = new ImmQueue <T>();
            LinkedListNode <T> node = list.First;

            //копируем значения из данного this-класса в наш обЪект, который мы только что создали
            while (node != null)
            {
                temp.list.AddLast(node.Value);
                node = node.Next;
            }
            //удаляем value не в this-классе, а в созданном только что объекте и возвращаем его
            temp.list.RemoveFirst();
            return(temp);
        }
예제 #2
0
        //метод, добавляющий value в конец неизменяемой очереди и возвращает новую очередь
        public ImmQueue <T> Enqueue(T value)
        {
            //создаем объект данного класса, который будем возвращать
            ImmQueue <T>       temp = new ImmQueue <T>();
            LinkedListNode <T> node = list.First;

            //копируем значения из данного this-класса в наш обЪект, который мы только что создали
            while (node != null)
            {
                temp.list.AddLast(node.Value);
                node = node.Next;
            }
            //добавляем value не в this-класс, а в созданный только что объект и возвращаем его
            temp.list.AddLast(value);
            return(temp);
        }