SlavkovB

Преврти ја листата

Nov 17th, 2018
347
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.76 KB | None | 0 0
  1. /** Дадена е двострано поврзана листа чии што јазли содржат по еден природен број.
  2. Листата треба да се преврти т.ш. прво се превртуваат јазлите кои содржат парни броеви,
  3. а потоа јазлите со непарни броеви. Листата се разгледува од назад.
  4. Право на користење имате само една дополнителна помошна двострано поврзана листа.
  5.  
  6. Во првиот ред од влезот е даден бројот на јазли во листа,
  7. потоа во вториот ред се дадени броевите од кои се составени јазлите по редослед во листата.
  8. На излез треба да се испечатат јазлите по редослед во превртената листа.
  9.  
  10. Забелешка: При реализација на задачите МОРА да се користат дадените структури,
  11. а не да се користат помошни структури како низи или сл.
  12.  
  13. Делумно решение: Задачата се смета за делумно решена доколку се поминати 7 тест примери.
  14.  
  15. Sample input                                                        Sample output
  16. 20                                                                  0 8 6 4 2 6 4 2 2 9 7 5 3 1 1 3 1 1 1 1
  17. 2 2 4 6 2 4 6 8 0 1 1 1 1 3 1 1 3 5 7 9                            
  18.  
  19. 9
  20. 2 2 4 6 2 4 6 8 0                                                   2 2 4 6 2 4 6 8 0
  21.  
  22. */
  23.  
  24.  
  25. //  CODE
  26.  
  27.  
  28. import java.util.Scanner;
  29.  
  30. public class PrevrtiLista {
  31.  
  32.     static Scanner input = new Scanner(System.in);
  33.  
  34.     public static void reverseList(DLL<Integer> list) {
  35.         DLLNode<Integer> currentLast = list.getLast();
  36.         DLL<Integer> list2 = new DLL<Integer>();
  37.  
  38.         while (currentLast != null) {
  39.             if ((currentLast.element % 2) == 0) {
  40.  
  41.                 DLLNode<Integer> current = list2.getFirst();
  42.                 list2.insertBefore(currentLast.element, current);
  43.                 currentLast = currentLast.pred;
  44.                 current = current.succ;
  45.  
  46.             } else if ((currentLast.element % 2) != 0) {
  47.                 list2.insertLast(currentLast.element);
  48.                 currentLast = currentLast.pred;
  49.             }
  50.         } // END OF While
  51.         DLLNode<Integer> current = list2.getFirst();
  52.        
  53.         while(current.element % 2 == 0) {
  54.             DLLNode<Integer> tmp = current;
  55.             list2.delete(current);
  56.             list2.insertFirst(tmp.element);
  57.             current = tmp.succ;
  58.         }
  59.         System.out.println(list2);
  60.     } // END OF reverseList method
  61.  
  62.     public static void main(String[] args) {
  63.  
  64.         DLL<Integer> list = new DLL<Integer>();
  65.         int n = input.nextInt();
  66.  
  67.         for (int i = 0; i < n; ++i) {
  68.             list.insertLast(input.nextInt());
  69.         }
  70.         reverseList(list);
  71.     } // END OF Main
  72. }
Add Comment
Please, Sign In to add comment