Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.util.NoSuchElementException;
- import java.util.Stack;
- public class ExpressionEvaluator {
- interface Stack<E>{
- boolean isEmpty();
- boolean isFull();
- E peek();
- void clear();
- void push(E x);
- E pop();
- }
- static class SLLNode<E>{
- SLLNode<E> succ;
- E element;
- public SLLNode(E element, SLLNode<E> next) {
- this.succ = next;
- this.element = element;
- }
- }
- static class LinkedStack<E> implements Stack<E> {
- //Stekot e pretstaven na sledniot nacin: top e link do prviot jazol
- // na ednostrano-povrzanata lista koja sodrzi gi elementite na stekot .
- private SLLNode<E> top;
- public LinkedStack () {
- // Konstrukcija na nov, prazen stek.
- top = null;
- }
- public boolean isEmpty () {
- // Vrakja true ako i samo ako stekot e prazen.
- return (top == null);
- }
- @Override
- public boolean isFull() {
- return false;
- }
- public E peek () {
- // Go vrakja elementot na vrvot od stekot.
- if (top == null)
- throw new NoSuchElementException();
- return top.element;
- }
- public void clear () {
- // Go prazni stekot.
- top = null;
- }
- public void push (E x) {
- // Go dodava x na vrvot na stekot.
- top = new SLLNode<E>(x, top);
- }
- public E pop () {
- // Go otstranuva i vrakja elementot shto e na vrvot na stekot.
- if (top == null)
- throw new NoSuchElementException();
- E topElem = top.element;
- top = top.succ;
- return topElem;
- }
- }
- public static int evaluateExpression(String expression){
- // Vasiot kod tuka
- LinkedStack<Integer> stek=new LinkedStack<>();
- int i=0;
- while(i<expression.length()){
- if(expression.charAt(i)=='*'){
- i++;
- int broj=expression.charAt(i)-'0';
- if(i+1==expression.length()){
- broj*=stek.pop();
- stek.push(broj);
- break;
- }
- while(Character.isDigit(expression.charAt(i+1))){
- i++;
- broj=broj*10 + expression.charAt(i)-'0';
- if(i+1==expression.length()){
- break;
- }
- }
- broj*=stek.pop();
- stek.push(broj);
- }
- else if(Character.isDigit(expression.charAt(i))) {
- int broj=expression.charAt(i)-'0';
- if(i==expression.length()-1) {
- stek.push(broj);
- break;
- }
- while(Character.isDigit(expression.charAt(i+1))){
- i++;
- broj=broj*10 + expression.charAt(i)-'0';
- if(i+1==expression.length()){
- break;
- }
- }
- stek.push(broj);
- }
- i++;
- }
- int rez=0;
- while(!stek.isEmpty()) rez+=stek.pop();
- return rez;
- }
- public static void main(String[] args) throws IOException {
- BufferedReader input=new BufferedReader(new InputStreamReader(System.in));
- System.out.println(evaluateExpression(input.readLine()));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement