public void TwoCustomTypesIEquatable_ContainInQueue() { ElementsIEquatable element1 = new ElementsIEquatable(1, "100"); ElementsIEquatable element2 = new ElementsIEquatable(1, "100"); Queue.Queue <ElementsIEquatable> elementQueue = new Queue.Queue <ElementsIEquatable>(); elementQueue.EnQueue(new ElementsIEquatable(1, "100")); elementQueue.EnQueue(element2); Assert.IsFalse(elementQueue.Contains(element1)); }
public void TwoCustomTypes_ContainInQueue() { Elements element1 = new Elements(1, "100"); Elements element2 = new Elements(12345, "12345"); Queue.Queue <Elements> elementQueue = new Queue.Queue <Elements>(); elementQueue.EnQueue(new Elements(1, "100")); elementQueue.EnQueue(element2); Assert.IsFalse(elementQueue.Contains(element1)); }
public double Evaluate(List <string> operandsList) { foreach (char exp in Expression) { _queue.EnQueue(exp); } while (!_queue.IsEmpty()) { var deQueued = (char)_queue.DeQueue(); if (deQueued > 96 && deQueued < 123) { var valueString = operandsList.FirstOrDefault(x => x.Contains(deQueued.ToString())); _stack.Push(double.Parse(valueString.Split(' ')[1])); } else { var valueA = (double)_stack.Pop(); var valueB = (double)_stack.Pop(); switch (deQueued) { case '+': _stack.Push(valueA + valueB); break; case '-': _stack.Push(valueA - valueB); break; case '/': _stack.Push(valueA / valueB); break; case '*': _stack.Push(valueA * valueB); break; } } } return((double)_stack.Pop()); }
public PostFix ToPostFix() { List <char> operatorsList = new List <char>() { '+', '-', '*', '/' }; List <char> additiveOp = new List <char>() { '+', '-' }; List <char> multiplicativeOp = new List <char>() { '*', '/' }; string returnString = ""; foreach (char input in Expression) //7 { if (input > 96 && input < 123) //2 { _queue.EnQueue(input); continue; } if (input == '(') //3 { _stack.Push(input); continue; } if (input == ')') //4 { while ((char)_stack.Peek() != '(') { _queue.EnQueue(_stack.Pop()); } _stack.Pop(); continue; } if (operatorsList.Contains(input) && (_stack.GetSize() == 0 || (char)_stack.Peek() == '(')) //5 { _stack.Push(input); continue; } while (!_stack.IsEmpty() && (additiveOp.Contains(input) && multiplicativeOp.Contains((char)_stack.Peek()))) //6 { if (operatorsList.Contains(input) && !_stack.IsEmpty()) { if (additiveOp.Contains(input) && multiplicativeOp.Contains((char)_stack.Peek())) { _queue.EnQueue(_stack.Pop()); } else { _stack.Push(input); } } } } while (!_stack.IsEmpty()) { _queue.EnQueue(_stack.Pop()); } while (!_queue.IsEmpty()) { returnString += _queue.DeQueue(); } return(new PostFix(returnString)); }