DamSi

Untitled

Aug 24th, 2015
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.21 KB | None | 0 0
  1. import java.util.NoSuchElementException;
  2.  
  3. interface Stack<E> {
  4.  
  5.     // Elementi na stekot se objekti od proizvolen tip.
  6.  
  7.     // Metodi za pristap:
  8.  
  9.     public boolean isEmpty ();
  10.         // Vrakja true ako i samo ako stekot e prazen.
  11.  
  12.     public E peek ();
  13.         // Go vrakja elementot na vrvot od stekot.
  14.  
  15.     // Metodi za transformacija:
  16.  
  17.     public void clear ();
  18.         // Go prazni stekot.
  19.  
  20.     public void push (E x);
  21.         // Go dodava x na vrvot na stekot.
  22.  
  23.     public E pop ();
  24.         // Go otstranuva i vrakja elementot shto e na vrvot na stekot.
  25. }
  26. lass ArrayStack<E> implements Stack<E> {
  27.  
  28.     // Stekot e pretstaven na sledniot nacin:
  29.     //depth e dlabochinata na stekot, a
  30.     // elems[0...depth-1] se negovite elementi.
  31.     private E[] elems;
  32.     private int depth;
  33.  
  34.     @SuppressWarnings("unchecked")
  35.     public ArrayStack (int maxDepth) {
  36.         // Konstrukcija na nov, prazen stek.
  37.         elems = (E[]) new Object[maxDepth];
  38.         depth = 0;
  39.     }
  40.  
  41.  
  42.     public boolean isEmpty () {
  43.         // Vrakja true ako i samo ako stekot e prazen.
  44.         return (depth == 0);
  45.     }
  46.  
  47.  
  48.     public E peek () {
  49.         // Go vrakja elementot na vrvot od stekot.
  50.         if (depth == 0)
  51.             throw new NoSuchElementException();
  52.         return elems[depth-1];
  53.     }
  54.  
  55.  
  56.     public void clear () {
  57.         // Go prazni stekot.
  58.         for (int i = 0; i < depth; i++)  elems[i] = null;
  59.         depth = 0;
  60.     }
  61.  
  62.  
  63.     public void push (E x) {
  64.         // Go dodava x na vrvot na stekot.
  65.         elems[depth++] = x;
  66.     }
  67.  
  68.  
  69.     public E pop () {
  70.         // Go otstranuva i vrakja elementot shto e na vrvot na stekot.
  71.         if (depth == 0)
  72.             throw new NoSuchElementException();
  73.         E topmost = elems[--depth];
  74.         elems[depth] = null;
  75.         return topmost;
  76.     }
  77. }
  78. public class Zagradi {
  79.     public static boolean daliKorektni (String phrase) {
  80.         // Test whether phrase is well-bracketed.
  81.         ArrayStack<Character> bracketStack = new ArrayStack<Character>(100);
  82.         for (int i = 0; i < phrase.length(); i++) {
  83.             char cur = phrase.charAt(i);
  84.             if (cur == '(' || cur == '[' || cur == '{')
  85.                 bracketStack.push(cur);
  86.             else if (cur == ')' || cur == ']' || cur == '}') {
  87.                 if (bracketStack.isEmpty()) return false;
  88.                 char left = bracketStack.pop();
  89.                 if (! daliSoodvetni(left, cur)) return false;
  90.             }
  91.         }
  92.         return (bracketStack.isEmpty());
  93.     }
  94.  
  95.     public static boolean daliSoodvetni (char left, char right) {
  96.         // Test whether left and right are matching brackets
  97.         // (assuming that left is a left bracket and right is a right bracket).
  98.         switch (left) {
  99.             case '(':
  100.                 return (right == ')');
  101.             case '[':
  102.                 return (right == ']');
  103.             case '{':
  104.                 return (right == '}');
  105.         }
  106.         return false;
  107.     }
  108.  
  109.     public static void main (String[] args) {
  110.          //String phrase = "s x (s – a) x (s – b) x (s – c)";
  111.          String phrase = "s x (s – a) x s – b) x (s – c)";
  112.          System.out.println(phrase + " ima "
  113.                     + (daliKorektni(phrase) ? "korektni" : "nekorektni")
  114.                     + " zagradi.");
  115.     }
  116. }
Advertisement
Add Comment
Please, Sign In to add comment