public void Push(HeapNode newItem) { if (newItem is AbstractTerm) { AbstractTerm at = newItem as AbstractTerm; if (at.IsReference) { if (at.Name == null || at.Name == "") { at.Name = "__" + _variableIndex.ToString(); _variableIndex++; } } } bool changeS = (_state.S == _extraItem); if (_h == null) { _heap = newItem; _extraItem = new HeapNode(); newItem.Next = _extraItem; _extraItem.Previous = newItem; _h = newItem; return; } _extraItem = newItem; _extraItem.Previous = _h; _h.Next = _extraItem; _h = _h.Next; if (changeS) { _state.S = _h; } HeapNode e = new HeapNode(); _extraItem.Next = e; e.Previous = _extraItem; _extraItem = _extraItem.Next; }
public void Pop_two_items() { AMHeap heap = new AMHeap(); ConstantTerm con = new ConstantTerm("ali"); ConstantTerm first = new ConstantTerm("foo"); heap.Push(first); heap.Push(con); heap.Pop(); Assert.AreSame(first, heap.Top()); }