Beispiel #1
0
 /// <summary>
 /// 使枚举数前进到 ETQueue<T> 的下一个元素。
 /// </summary>
 /// <returns></returns>
 public bool MoveNext()
 {
     if (node == default(ETQueueNode <T>))
     {
         node = header;
     }
     else
     {
         node = node.NextNode;
     }
     return(node != null);
 }
Beispiel #2
0
 private T _Pop()
 {
     if (_Header == default(ETQueueNode <T>))
     {
         throw new EmptyNodeException("当前队列为空。");
     }
     else
     {
         T value = _Header.Value;
         _Header = _Header.NextNode;
         _Count--;
         return(value);
     }
 }
Beispiel #3
0
 private void _Add(ETQueueNode <T> node)
 {
     if (_Header == default(ETQueueNode <T>))
     {
         //建立首个节点
         node.NextNode = default(ETQueueNode <T>);
         node.PrevNode = default(ETQueueNode <T>);
         _Header       = node;
         _LastNode     = _Header;
     }
     else
     {
         //建立非首个节点
         node.PrevNode      = _LastNode;
         _LastNode.NextNode = node;
         _LastNode          = node;
     }
     _Count++;
 }
Beispiel #4
0
 /// <summary>
 /// 添加一个节点到队列
 /// </summary>
 /// <param name="node">要添加到队列的节点</param>
 public void Add(ETQueueNode <T> node)
 {
     _Add(node);
 }
Beispiel #5
0
 /// <summary>
 /// 释放由 ETEnumerator 使用的所有资源。
 /// </summary>
 public void Dispose()
 {
     node   = null;
     header = null;
 }
Beispiel #6
0
 /// <summary>
 /// 重置位置
 /// </summary>
 public void Reset()
 {
     node = default(ETQueueNode <T>);
 }
Beispiel #7
0
 public ETEnumerator(ETQueueNode <T> header)
 {
     this.header = header;
 }
Beispiel #8
0
 public ETQueueNode(T value, ETQueueNode <T> prevNode)
     : this(value, default(ETQueueNode <T>), prevNode)
 {
 }
Beispiel #9
0
 public ETQueueNode(T value, ETQueueNode <T> nextNode, ETQueueNode <T> prevNode)
 {
     this._Value    = value;
     this._NextNode = nextNode;
     this._PrevNode = prevNode;
 }