Advertisement
metalni

APS Labs 4 Modificiran XML kod

Nov 13th, 2020 (edited)
1,255
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.19 KB | None | 0 0
  1. package XML;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.InputStreamReader;
  5. import java.util.NoSuchElementException;
  6.  
  7. class SLLNode<E> {
  8.     protected E element;
  9.     protected SLLNode<E> succ;
  10.  
  11.     public SLLNode(E elem, SLLNode<E> succ) {
  12.         this.element = elem;
  13.         this.succ = succ;
  14.     }
  15.  
  16.     @Override
  17.     public String toString() {
  18.         return element.toString();
  19.     }
  20. }
  21.  
  22. interface Stack<E> {
  23.     public boolean isEmpty ();
  24.     public E peek ();
  25.     public void clear ();
  26.     public void push (E x);
  27.     public E pop ();
  28. }
  29.  
  30. class LinkedStack<E> implements Stack<E> {
  31.  
  32.     //Stekot e pretstaven na sledniot nacin: top e link do prviot jazol
  33.     // na ednostrano-povrzanata lista koja sodrzi gi elementite na stekot .
  34.     private SLLNode<E> top;
  35.  
  36.     public LinkedStack () {
  37.         // Konstrukcija na nov, prazen stek.
  38.         top = null;
  39.     }
  40.  
  41.     public boolean isEmpty () {
  42.         // Vrakja true ako i samo ako stekot e prazen.
  43.         return (top == null);
  44.     }
  45.  
  46.     public E peek () {
  47.         // Go vrakja elementot na vrvot od stekot.
  48.         if (top == null)
  49.             throw new NoSuchElementException();
  50.         return top.element;
  51.     }
  52.  
  53.     public void clear () {
  54.         // Go prazni stekot.
  55.         top = null;
  56.     }
  57.  
  58.     public void push (E x) {
  59.         // Go dodava x na vrvot na stekot.
  60.         top = new SLLNode<E>(x, top);
  61.     }
  62.  
  63.     public E pop () {
  64.         // Go otstranuva i vrakja elementot shto e na vrvot na stekot.
  65.         if (top == null)
  66.             throw new NoSuchElementException();
  67.         E topElem = top.element;
  68.         top = top.succ;
  69.         return topElem;
  70.     }
  71.  
  72. }
  73.  
  74. public class CheckXML {
  75.  
  76.     public static int checkValidXML(String [] check){
  77.         LinkedStack<String> openedTags = new LinkedStack<>();
  78.         int valid = 0;
  79.         for(int i=0; i<check.length; i++){
  80.             //check if it's a tag
  81.             if(check[i].contains("[") || check[i].contains("]")){
  82.                 //if it is an opening tag push it into the stack
  83.                 if(!check[i].contains("/"))
  84.                     openedTags.push(check[i]);
  85.  
  86.                 //convert the opening tag on top of stack to closing tag and compare it with the real closing tag
  87.                 if(check[i].contains("/")){
  88.                     String closedCmp = "[/" + openedTags.pop().substring(1);
  89.                     if(check[i].equals(closedCmp))
  90.                         valid = 1;
  91.                     else {
  92.                         valid = 0;
  93.                         break;
  94.                     }
  95.                 }
  96.             }
  97.         }
  98.         return valid;
  99.     }
  100.  
  101.     public static void main(String[] args) throws Exception{
  102.  
  103.         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  104.         String s = br.readLine();
  105.         int n = Integer.parseInt(s);
  106.         String [] redovi = new String[n];
  107.  
  108.         for(int i=0;i<n;i++)
  109.             redovi[i] = br.readLine();
  110.  
  111.         int valid;
  112.  
  113.         // Vasiot kod tuka
  114.         // Moze da koristite dopolnitelni funkcii ako vi se potrebni
  115.         valid = checkValidXML(redovi);
  116.         System.out.println(valid);
  117.  
  118.         br.close();
  119.     }
  120. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement