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);
        }
Exemple #2
0
        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);
        }