예제 #1
0
 public T Peek()
 {
     if (Head == null)
     {
         throw new NullReferenceException("Empty Queue");
     }
     else
     {
         return(Head.Clone().Value);
     }
 }
예제 #2
0
        public T Dequeue()
        {
            if (Head == null)
            {
                throw new NullReferenceException("Empty Queue");
            }

            else if (Head == Tail)
            {
                var tmp = Head.Value;
                Head    = null;
                Tail    = null;
                Current = null;
                return(tmp);
            }
            else if (Tail.Next == Head)
            {
                var tmp = Head.Value;
                Head      = Tail;
                Head.Next = null;
                return(tmp);
            }

            else
            {
                var tmp = Head.Value;

                Head = Tail.Clone();
                while (Head.Next.Next != null)
                {
                    Head = Head.Next;
                }
                Head.Next = null;
                return(tmp);
            }
        }