From bae7f8915618c396b677428b314188ef566c6db5 Mon Sep 17 00:00:00 2001 From: Hardik Pawar <97388607+Hardvan@users.noreply.github.com> Date: Sun, 13 Oct 2024 16:27:05 +0530 Subject: [PATCH] feat: Add `PrefixEvaluator` new algorithm with Junit tests (#5755) --- DIRECTORY.md | 2 + .../thealgorithms/stacks/PrefixEvaluator.java | 76 +++++++++++++++++++ .../stacks/PrefixEvaluatorTest.java | 27 +++++++ 3 files changed, 105 insertions(+) create mode 100644 src/main/java/com/thealgorithms/stacks/PrefixEvaluator.java create mode 100644 src/test/java/com/thealgorithms/stacks/PrefixEvaluatorTest.java diff --git a/DIRECTORY.md b/DIRECTORY.md index a78efffb8..d9beaadcb 100644 --- a/DIRECTORY.md +++ b/DIRECTORY.md @@ -600,6 +600,7 @@ * [NextSmallerElement](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/stacks/NextSmallerElement.java) * [PostfixEvaluator](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/stacks/PostfixEvaluator.java) * [PostfixToInfix](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/stacks/PostfixToInfix.java) + * [PrefixEvaluator](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/stacks/PrefixEvaluator.java) * [PrefixToInfix](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/stacks/PrefixToInfix.java) * [SortStack](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/stacks/SortStack.java) * [StackPostfixNotation](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/stacks/StackPostfixNotation.java) @@ -1131,6 +1132,7 @@ * [NextSmallerElementTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/stacks/NextSmallerElementTest.java) * [PostfixEvaluatorTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/stacks/PostfixEvaluatorTest.java) * [PostfixToInfixTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/stacks/PostfixToInfixTest.java) + * [PrefixEvaluatorTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/stacks/PrefixEvaluatorTest.java) * [PrefixToInfixTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/stacks/PrefixToInfixTest.java) * [SortStackTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/stacks/SortStackTest.java) * [StackPostfixNotationTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/stacks/StackPostfixNotationTest.java) diff --git a/src/main/java/com/thealgorithms/stacks/PrefixEvaluator.java b/src/main/java/com/thealgorithms/stacks/PrefixEvaluator.java new file mode 100644 index 000000000..eb2ce95e1 --- /dev/null +++ b/src/main/java/com/thealgorithms/stacks/PrefixEvaluator.java @@ -0,0 +1,76 @@ +package com.thealgorithms.stacks; + +import java.util.Set; +import java.util.Stack; + +/** + * Evaluate a prefix (Polish) expression using a stack. + * + *
Example: Expression "+ * 2 3 4" results in 10. + *
Applications: Useful for implementing compilers and interpreters.
+ *
+ * @author Hardvan
+ */
+public final class PrefixEvaluator {
+ private PrefixEvaluator() {
+ }
+
+ private static final Set