示例#1
0
        public T Pop()
        {
            if (first == null)
            {
                throw new IndexOutOfRangeException();
            }
            var popResult = first;

            nodes.Remove(popResult.Value);
            first = first.Next;
            if (first != null)
            {
                first.Previous = null;
            }
            return(popResult.Value);
        }
示例#2
0
 public void Push(T value)
 {
     if (nodes.ContainsKey(value))
     {
         throw new ArgumentException("Traverse stack can't push equal elements!");
     }
     if (first == null)
     {
         first = new TraverseStackNode <T>(value);
     }
     else
     {
         var newNode = new TraverseStackNode <T>(value);
         newNode.Next   = first;
         first.Previous = newNode;
         first          = newNode;
     }
     nodes[value] = first;
 }