protected LinkedListNode <Node> ReplaceSelfWithResult(LinkedListNode <Node> node, double result) { var value = new NumberNode(result); var resultNode = node.List !.AddAfter(node.Next !, value); resultNode.List !.Remove(resultNode.Previous !.Previous !.Previous !); resultNode.List !.Remove(resultNode.Previous !.Previous !); resultNode.List !.Remove(resultNode.Previous !); return(resultNode); }
public override LinkedListNode <Node> Apply(LinkedListNode <Node> node) { var a = ((ValueNode)node.Previous !.Value).GetValue(); var b = ((ValueNode)node.Next !.Value).GetValue(); var value = new NumberNode(Type == NodeType.PlusOperator ? a + b : a - b); var result = node.List !.AddAfter(node.Next !, value); result.List !.Remove(result.Previous !.Previous !.Previous !); result.List !.Remove(result.Previous !.Previous !); result.List !.Remove(result.Previous !); return(result); }