diff --git a/com/xgiovio/StackCheckParenthesis.java b/com/xgiovio/StackCheckParenthesis.java new file mode 100644 index 0000000..12ec6b4 --- /dev/null +++ b/com/xgiovio/StackCheckParenthesis.java @@ -0,0 +1,79 @@ +package com.xgiovio; + +import exceptions.EmpyStackException; +import stack.SinglePointerStack; + +import java.util.Scanner; + +public class StackCheckParenthesis { + + /////////////// questo programma controlla se una strng ain input ha correttaemnte le parentesi tonde e quadre + + public static void main(String[] args) { + + System.out.println("Stringa in input con () e []:"); + Scanner reader = new Scanner(System.in); + String word = reader.nextLine(); + boolean status = true; + + SinglePointerStack stack = new SinglePointerStack(); + try{ + for (int i = 0;i< word.length();i++){ + + if (word.charAt(i) != '(' && word.charAt(i) != ')' && word.charAt(i) != '[' && word.charAt(i) != ']' ){ + continue; + } + + if ( word.charAt(i) == '(' ){ + stack.push('('); + + continue; + } + + if ( word.charAt(i) == ')' ){ + if (stack.top() == '(' ){ + stack.pop(); + continue; + } else{ + status = false; + break; + } + + } + + if ( word.charAt(i) == '[' ){ + if (stack.isEmpty()){ + stack.push('['); + continue; + } + if ( stack.top() == '(' ){ + status = false; + break; + } else{ + stack.push('['); + continue; + } + } + + if ( word.charAt(i) == ']' ){ + if (stack.top() == '[' ){ + stack.pop(); + continue; + } else{ + status = false; + break; + } + } + + } + if (status && stack.isEmpty()) { + System.out.println("Stringa corretta"); } + else{ + System.out.println("Stringa errata"); + } + } + catch (EmpyStackException e){ + System.out.println("Stringa errata"); + } + } +} diff --git a/com/xgiovio/StackInvertString.java b/com/xgiovio/StackInvertString.java new file mode 100644 index 0000000..6ea2cb0 --- /dev/null +++ b/com/xgiovio/StackInvertString.java @@ -0,0 +1,30 @@ +package com.xgiovio; + +import exceptions.EmpyStackException; +import stack.SinglePointerStack; + +import java.util.Scanner; + +public class StackInvertString { + + /////////////// questo programma inverte una stringa mediante stack + + public static void main(String[] args) { + + System.out.println("Stringa in input"); + Scanner reader = new Scanner(System.in); + String word = reader.nextLine(); + String word_inverted = ""; + + SinglePointerStack stack = new SinglePointerStack(); + for (int i = 0;i< word.length();i++){ + stack.push(word.charAt(i)); + } + for (int i = 0;i< word.length();i++){ + word_inverted = word_inverted.concat(String.valueOf(stack.pop())); + } + + System.out.println(word_inverted); } + + + } diff --git a/stack/SinglePointerStack.java b/stack/SinglePointerStack.java index fcb75ff..9613d5e 100644 --- a/stack/SinglePointerStack.java +++ b/stack/SinglePointerStack.java @@ -37,6 +37,7 @@ public class SinglePointerStack extends StackRules { }else{ to_return = stack; stack = stack.getNext(); + --number_of_elements; return to_return.getElement(); } }