Advertisement
stefk0xd

OddEvenPairs APS 2019 kol 1

Nov 21st, 2019
866
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.46 KB | None | 0 0
  1. import java.io.IOException;
  2. import java.util.Scanner;
  3.  
  4. class SLLNode<E> {
  5.     protected E element;
  6.     protected SLLNode<E> succ;
  7.     public SLLNode(){
  8.         this.succ = null;
  9.     }
  10.     public SLLNode(E elem, SLLNode<E> succ) {
  11.         this.element = elem;
  12.         this.succ = succ;
  13.     }
  14.     public SLLNode(E element){
  15.         this.element = element;
  16.         this.succ = null;
  17.     }
  18.  
  19.     @Override
  20.     public String toString() {
  21.         return element.toString();
  22.     }
  23. }
  24. class SLL<E> {
  25.     private SLLNode<E> first;
  26.  
  27.     public SLL() {
  28.         // Construct an empty SLL
  29.         this.first = null;
  30.     }
  31.  
  32.     public void deleteList() {
  33.         first = null;
  34.     }
  35.  
  36.     public int length() {
  37.         int ret;
  38.         if (first != null) {
  39.             SLLNode<E> tmp = first;
  40.             ret = 1;
  41.             while (tmp.succ != null) {
  42.                 tmp = tmp.succ;
  43.                 ret++;
  44.             }
  45.             return ret;
  46.         } else
  47.             return 0;
  48.  
  49.     }
  50.  
  51.     @Override
  52.     public String toString() {
  53.         String ret = new String();
  54.         if (first != null) {
  55.             SLLNode<E> tmp = first;
  56.             ret += tmp + "->";
  57.             while (tmp.succ != null) {
  58.                 tmp = tmp.succ;
  59.                 ret += tmp + "->";
  60.             }
  61.         } else
  62.             ret = "Prazna lista!!!";
  63.         return ret;
  64.     }
  65.  
  66.     public void insertFirst(E o) {
  67.         SLLNode<E> ins = new SLLNode<E>(o, first);
  68.         first = ins;
  69.     }
  70.  
  71.     public void insertAfter(E o, SLLNode<E> node) {
  72.         if (node != null) {
  73.             SLLNode<E> ins = new SLLNode<E>(o, node.succ);
  74.             node.succ = ins;
  75.         } else {
  76.             System.out.println("Dadenot jazol e null");
  77.         }
  78.     }
  79.  
  80.     public void insertBefore(E o, SLLNode<E> before) {
  81.  
  82.         if (first != null) {
  83.             SLLNode<E> tmp = first;
  84.             if (first == before) {
  85.                 this.insertFirst(o);
  86.                 return;
  87.             }
  88.             //ako first!=before
  89.             while (tmp.succ != before)
  90.                 tmp = tmp.succ;
  91.             if (tmp.succ == before) {
  92.                 SLLNode<E> ins = new SLLNode<E>(o, before);
  93.                 tmp.succ = ins;
  94.             } else {
  95.                 System.out.println("Elementot ne postoi vo listata");
  96.             }
  97.         } else {
  98.             System.out.println("Listata e prazna");
  99.         }
  100.     }
  101.  
  102.     public void insertLast(E o) {
  103.         if (first != null) {
  104.             SLLNode<E> tmp = first;
  105.             while (tmp.succ != null)
  106.                 tmp = tmp.succ;
  107.             SLLNode<E> ins = new SLLNode<E>(o, null);
  108.             tmp.succ = ins;
  109.         } else {
  110.             insertFirst(o);
  111.         }
  112.     }
  113.  
  114.     public E deleteFirst() {
  115.         if (first != null) {
  116.             SLLNode<E> tmp = first;
  117.             first = first.succ;
  118.             return tmp.element;
  119.         } else {
  120.             System.out.println("Listata e prazna");
  121.             return null;
  122.         }
  123.     }
  124.  
  125.     public E delete(SLLNode<E> node) {
  126.         if (first != null) {
  127.             SLLNode<E> tmp = first;
  128.             if (first == node) {
  129.                 return this.deleteFirst();
  130.             }
  131.             while (tmp.succ != node && tmp.succ.succ != null)
  132.                 tmp = tmp.succ;
  133.             if (tmp.succ == node) {
  134.                 tmp.succ = tmp.succ.succ;
  135.                 return node.element;
  136.             } else {
  137.                 System.out.println("Elementot ne postoi vo listata");
  138.                 return null;
  139.             }
  140.         } else {
  141.             System.out.println("Listata e prazna");
  142.             return null;
  143.         }
  144.  
  145.     }
  146.  
  147.     public SLLNode<E> getFirst() {
  148.         return first;
  149.     }
  150.  
  151.     public SLLNode<E> getLast(){
  152.         SLLNode<E> temp = first;
  153.         while (temp.succ!=null){
  154.             temp = temp.succ;
  155.         }
  156.         return temp;
  157.     }
  158.  
  159.     public SLLNode<E> find(E o) {
  160.         if (first != null) {
  161.             SLLNode<E> tmp = first;
  162.             while (tmp.element != o && tmp.succ != null)
  163.                 tmp = tmp.succ;
  164.             if (tmp.element == o) {
  165.                 return tmp;
  166.             } else {
  167.                 System.out.println("Elementot ne postoi vo listata");
  168.             }
  169.         } else {
  170.             System.out.println("Listata e prazna");
  171.         }
  172.         return first;
  173.     }
  174.  
  175.     public void printList(){
  176.         SLLNode<E> temp = first;
  177.         while (temp!=null){
  178.             System.out.println(temp.element);
  179.             temp = temp.succ;
  180.         }
  181.     }
  182.  
  183. }
  184. public class ImeNaKlasa {
  185.     public static SLL oddEvenPairsFunction(SLL<Integer>list){
  186.         SLLNode<Integer> temp = list.getFirst();
  187.         SLLNode<Integer> oddTemp = new SLLNode<Integer>();
  188.         SLLNode<Integer> evenTemp = new SLLNode<Integer>();
  189.         int nEven = 0, nOdd = 0;
  190.         int paren = 0, neparen = 0;
  191.         while (temp != null){
  192.             if ( temp.element%2 == 0 ){
  193.                 nEven++;
  194.                 if ( nEven == 1 ){
  195.                     paren = temp.element;
  196.                     evenTemp = temp;
  197.                 }
  198.                 if ( nEven == 2 ){
  199.                     nEven = 0;
  200.                     SLLNode<Integer> newNode = new SLLNode<Integer>(temp.element+paren);
  201.                     newNode.succ = evenTemp.succ;
  202.                     evenTemp.succ = newNode;
  203.                     list.delete(evenTemp);
  204.                     list.delete(temp);
  205.                 }
  206.             }
  207.             else{
  208.                 nOdd++;
  209.                 if ( nOdd == 1){
  210.                     neparen = temp.element;
  211.                     oddTemp = temp;
  212.                 }
  213.                 if ( nOdd == 2 ){
  214.                     nOdd = 0;
  215.                     SLLNode<Integer> newNode = new SLLNode<Integer>(neparen-temp.element);
  216.                     newNode.succ = oddTemp.succ;
  217.                     oddTemp.succ = newNode;
  218.                     list.delete(oddTemp);
  219.                     list.delete(temp);
  220.                 }
  221.             }
  222.             temp = temp.succ;
  223.         }
  224.  
  225.  
  226.  
  227.         return list;
  228.     }
  229.  
  230.     public static void main(String []args) throws IOException {
  231.         SLL<Integer> list = new SLL<Integer>();
  232.         Scanner scanner = new Scanner(System.in);
  233.         int n = scanner.nextInt();
  234.         for (int i =0 ; i < n; i++){
  235.             list.insertLast(scanner.nextInt());
  236.         }
  237.         oddEvenPairsFunction(list);
  238.         list.printList();
  239.     }
  240. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement