Advertisement
sindi29

[APS] - Razigrana lista

Nov 6th, 2016
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.24 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4.  
  5. class DLLNode<E> {
  6.     protected E element;
  7.     protected DLLNode<E> pred, succ;
  8.  
  9.     public DLLNode(E elem, DLLNode<E> pred, DLLNode<E> succ) {
  10.         this.element = elem;
  11.         this.pred = pred;
  12.         this.succ = succ;
  13.     }
  14.  
  15.     @Override
  16.     public String toString() {
  17.         return "<-"+element.toString()+"->";
  18.     }
  19. }
  20.  
  21.  
  22. class DLL<E> {
  23.     private DLLNode<E> first, last;
  24.  
  25.     public DLL() {
  26.         // Construct an empty SLL
  27.         this.first = null;
  28.         this.last = null;
  29.     }
  30.     public void setFirst(DLLNode<E> pom) {
  31.         first = pom;
  32.     }
  33.     public DLLNode<E> getFirst() {
  34.         return first;
  35.     }
  36.     public void deleteList() {
  37.         first = null;
  38.         last = null;
  39.     }
  40.  
  41.     public int length() {
  42.         int ret;
  43.         if (first != null) {
  44.             DLLNode<E> tmp = first;
  45.             ret = 1;
  46.             while (tmp.succ != null) {
  47.                 tmp = tmp.succ;
  48.                 ret++;
  49.             }
  50.             return ret;
  51.         } else
  52.             return 0;
  53.  
  54.     }
  55.  
  56.     public void insertFirst(E o) {
  57.         DLLNode<E> ins = new DLLNode<E>(o, null, first);
  58.         if (first == null)
  59.             last = ins;
  60.         else
  61.             first.pred = ins;
  62.         first = ins;
  63.     }
  64.  
  65.     public void insertLast(E o) {
  66.         if (first == null)
  67.             insertFirst(o);
  68.         else {
  69.             DLLNode<E> ins = new DLLNode<E>(o, last, null);
  70.             last.succ = ins;
  71.             last = ins;
  72.         }
  73.     }
  74.  
  75.     public void insertAfter(E o, DLLNode<E> after) {
  76.         if(after==last) {
  77.             insertLast(o);
  78.             return;
  79.         }
  80.         DLLNode<E> ins = new DLLNode<E>(o, after, after.succ);
  81.         after.succ.pred = ins;
  82.         after.succ = ins;
  83.     }
  84.  
  85.     public void insertBefore(E o, DLLNode<E> before) {
  86.         if(before == first) {
  87.             insertFirst(o);
  88.             return;
  89.         }
  90.         DLLNode<E> ins = new DLLNode<E>(o, before.pred, before);
  91.         before.pred.succ = ins;
  92.         before.pred = ins;
  93.     }
  94.  
  95.     public E deleteFirst() {
  96.         if (first != null) {
  97.             DLLNode<E> tmp = first;
  98.             first = first.succ;
  99.             if (first != null) first.pred = null;
  100.             if (first == null)
  101.                 last = null;
  102.             return tmp.element;
  103.         } else
  104.             return null;
  105.     }
  106.  
  107.     public E deleteLast() {
  108.         if (first != null) {
  109.             if (first.succ == null)
  110.                 return deleteFirst();
  111.             else {
  112.                 DLLNode<E> tmp = last;
  113.                 last = last.pred;
  114.                 last.succ = null;
  115.                 return tmp.element;
  116.             }
  117.         }
  118.         // else throw Exception
  119.         return null;
  120.     }
  121.  
  122. public void setLast(DLLNode<E> node)
  123.     {
  124.         last = node;
  125.     }
  126.     @Override
  127.     public String toString() {
  128.         String s = new String();
  129.         DLLNode<E> dvizi = first;
  130.         while(dvizi!=null)
  131.         {
  132.             if(dvizi.succ==null)
  133.                 s = s+ dvizi.element;
  134.             else
  135.                 s = s+ dvizi.element+" ";
  136.             dvizi = dvizi.succ;
  137.         }
  138.         return s;
  139.     }
  140.  
  141.  
  142.  
  143.     public DLLNode<E> getLast() {
  144.  
  145.         return last;
  146.     }
  147.  
  148. }
  149. public class Rt {
  150.  
  151.     public static String otstranuvanje(DLL<String> lista)
  152.     {
  153.        
  154.         while(lista.getFirst().succ!=null)
  155.         {
  156.             DLLNode<String> dvizi = lista.getFirst().succ;
  157.             while(dvizi!=null)
  158.             {
  159.                 DLLNode<String> p1 = dvizi.pred;
  160.                 DLLNode<String> p2 = dvizi.succ;
  161.                 p1.succ = p2;
  162.                 if(p2!=null)
  163.                 {
  164.                     p2.pred = p1;
  165.                     dvizi = p2.succ;
  166.                 }
  167.                 else
  168.                 {
  169.                    lista.setLast(p1);
  170.                    dvizi =p2;
  171.                 }
  172.             }
  173.             System.out.println(lista);
  174.             if(lista.getFirst().succ==null)
  175.                 break;
  176.             dvizi = lista.getLast().pred;
  177.             while(dvizi!=null)
  178.             {
  179.                 DLLNode<String> p1 = dvizi.pred;
  180.                 DLLNode<String> p2 = dvizi.succ;
  181.                 p2.pred = p1;
  182.                 if(p1!=null)
  183.                 {
  184.                     p1.succ = p2;
  185.                     dvizi = p1.pred;
  186.                 }
  187.                
  188.                 else
  189.                 {
  190.                     lista.setFirst(p2);
  191.                        dvizi = p1;
  192.                 }
  193.             }
  194.             System.out.println(lista);
  195.            
  196.         }
  197.         return lista.getFirst().element;
  198.     }
  199.     public static void main(String[] args) throws IOException {
  200.         DLL<String> lista = new DLL<>();
  201.         BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
  202.         String s =stdin.readLine();
  203.         String pomniza[] = s.split(" ");
  204.         /*s.trim();
  205.         char niza[] = s.toCharArray();*/
  206.        
  207.         for(int i=0;i<pomniza.length;i++)
  208.         {
  209.             lista.insertLast(pomniza[i]);
  210.         }
  211.         System.out.println(otstranuvanje(lista));
  212.     }
  213.    
  214. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement