Advertisement
dzocesrce

[APS] Swap First & Last Node

Aug 28th, 2023
436
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.89 KB | None | 0 0
  1. //smena na posleden i prv element na SLL
  2. import java.util.Scanner;
  3.  
  4. class SLLNode<E> {
  5.     protected E element;
  6.     protected SLLNode<E> succ;
  7.  
  8.     public SLLNode(E elem, SLLNode<E> succ) {
  9.         this.element = elem;
  10.         this.succ = succ;
  11.     }
  12.  
  13.     @Override
  14.     public String toString() {
  15.         return element.toString();
  16.     }
  17. }
  18.  
  19. class SLL<E> {
  20.     public SLLNode<E> first;
  21.  
  22.     public SLL() {
  23.         this.first = null;
  24.     }
  25.  
  26.     public void deleteList() {
  27.         first = null;
  28.     }
  29.  
  30.     public int length() {
  31.         int ret;
  32.         if (first != null) {
  33.             SLLNode<E> tmp = first;
  34.             ret = 1;
  35.             while (tmp.succ != null) {
  36.                 tmp = tmp.succ;
  37.                 ret++;
  38.             }
  39.             return ret;
  40.         } else
  41.             return 0;
  42.  
  43.     }
  44.  
  45.     @Override
  46.     public String toString() {
  47.         String ret = new String();
  48.         if (first != null) {
  49.             SLLNode<E> tmp = first;
  50.             ret += tmp;
  51.             while (tmp.succ != null) {
  52.                 tmp = tmp.succ;
  53.                 ret += " " + tmp;
  54.             }
  55.         } else
  56.             ret = "Prazna lista!!!";
  57.         return ret;
  58.     }
  59.  
  60.     public void insertFirst(E o) {
  61.         SLLNode<E> ins = new SLLNode<E>(o, first);
  62.         first = ins;
  63.     }
  64.  
  65.     public void insertAfter(E o, SLLNode<E> node) {
  66.         if (node != null) {
  67.             SLLNode<E> ins = new SLLNode<E>(o, node.succ);
  68.             node.succ = ins;
  69.         } else {
  70.             System.out.println("Dadenot jazol e null");
  71.         }
  72.     }
  73.  
  74.     public void insertBefore(E o, SLLNode<E> before) {
  75.         if (first != null) {
  76.             SLLNode<E> tmp = first;
  77.             if (first == before) {
  78.                 this.insertFirst(o);
  79.                 return;
  80.             }
  81.             while (tmp.succ != before)
  82.                 tmp = tmp.succ;
  83.             if (tmp.succ == before) {
  84.                 SLLNode<E> ins = new SLLNode<E>(o, before);
  85.                 tmp.succ = ins;
  86.             } else {
  87.                 System.out.println("Elementot ne postoi vo listata");
  88.             }
  89.         } else {
  90.             System.out.println("Listata e prazna");
  91.         }
  92.     }
  93.  
  94.     public void insertLast(E o) {
  95.         if (first != null) {
  96.             SLLNode<E> tmp = first;
  97.             while (tmp.succ != null)
  98.                 tmp = tmp.succ;
  99.             SLLNode<E> ins = new SLLNode<E>(o, null);
  100.             tmp.succ = ins;
  101.         } else {
  102.             insertFirst(o);
  103.         }
  104.     }
  105.  
  106.     public E deleteFirst() {
  107.         if (first != null) {
  108.             SLLNode<E> tmp = first;
  109.             first = first.succ;
  110.             return tmp.element;
  111.         } else {
  112.             System.out.println("Listata e prazna");
  113.             return null;
  114.         }
  115.     }
  116.  
  117.     public E delete(SLLNode<E> node) {
  118.         if (first != null) {
  119.             SLLNode<E> tmp = first;
  120.             if (first == node) {
  121.                 return this.deleteFirst();
  122.             }
  123.             while (tmp.succ != node && tmp.succ.succ != null)
  124.                 tmp = tmp.succ;
  125.             if (tmp.succ == node) {
  126.                 tmp.succ = tmp.succ.succ;
  127.                 return node.element;
  128.             } else {
  129.                 System.out.println("Elementot ne postoi vo listata");
  130.                 return null;
  131.             }
  132.         } else {
  133.             System.out.println("Listata e prazna");
  134.             return null;
  135.         }
  136.     }
  137.  
  138.     public SLLNode<E> getFirst() {
  139.         return first;
  140.     }
  141.  
  142.     public SLLNode<E> find(E o) {
  143.         if (first != null) {
  144.             SLLNode<E> tmp = first;
  145.             while (tmp.element != o && tmp.succ != null)
  146.                 tmp = tmp.succ;
  147.             if (tmp.element == o) {
  148.                 return tmp;
  149.             } else {
  150.                 System.out.println("Elementot ne postoi vo listata");
  151.             }
  152.         } else {
  153.             System.out.println("Listata e prazna");
  154.         }
  155.         return first;
  156.     }
  157. }
  158. public class firstVSlast {
  159.     public static void smeni(SLL<Integer> lista){
  160.         SLLNode<Integer> first= lista.getFirst();
  161.         SLLNode<Integer> last= lista.getFirst();
  162.         SLLNode<Integer> temp;
  163.         while(last.succ.succ!=null) last=last.succ;
  164.         temp=last;
  165.         last=last.succ;
  166.         last.succ=first.succ;
  167.         first.succ=null;
  168.         temp.succ=first;
  169.         lista.first=last;
  170.     }
  171.     public static void main(String[] args) {
  172.         Scanner input= new Scanner(System.in);
  173.         int n= Integer.parseInt(input.nextLine());
  174.         String[] broevi= input.nextLine().split("\\s+");
  175.         SLL<Integer> lista= new SLL<Integer>();
  176.         for(int i=0;i<n;i++){
  177.             lista.insertLast(Integer.parseInt(broevi[i]));
  178.         }
  179.         smeni(lista);
  180.         System.out.println(lista);
  181.     }
  182.     }
  183. /*
  184. 8
  185. 3 4 7 6 4 7 3 2
  186. 2 4 7 6 4 7 3 3
  187.  
  188. 5
  189. 1 2 3 4 5
  190. 5 2 3 4 1
  191.  */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement