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