Exemple #1
0
        // add element to head of queue
        public void WriteFirst(T data)
        {
            var node = new DoubleNode <T>(data);

            if (last == null)
            {
                last = node;
            }
            else
            {
                first.Previous = node;
                node.Next      = first;
            }

            first = node;
            ++count;
        }
Exemple #2
0
        // add element to end of queue
        public void WriteLast(T data)
        {
            var node = new DoubleNode <T>(data);

            if (first == null)
            {
                first = node;
            }
            else
            {
                last.Next     = node;
                node.Previous = last;
            }

            last = node;
            ++count;
        }
Exemple #3
0
        // get element from head of queue
        public T ReadFirst()
        {
            if (count == 0)
            {
                first = last = null;

                throw (new InvalidOperationException(EmptyMsg));
            }

            var node = first;

            first = first.Next;

            node.Next = node.Previous = null;
            --count;

            return(node.Data);
        }