ivana_andreevska

Objasnuvanje za Single Linked Lista i funkcii i operacii vrz nea

Nov 13th, 2021 (edited)
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.83 KB | None | 0 0
  1. public class SingleLista {
  2.  
  3.     class SLLNode<E>
  4.     {
  5.         //pravime klassa za da go pretstavime jazolot i negovite elementi
  6.         protected E data;
  7.         //data vo jazolot
  8.         protected SLLNode<E> succ;
  9.         //linker vo  jazolot
  10.  
  11.         //konstruktor za jazolot
  12.         public SLLNode(E data , SLLNode succ)
  13.         {
  14.             this.data=data;
  15.             this.succ=succ;
  16.         }
  17.  
  18.         //toString metod
  19.  
  20.         public String toString()
  21.         {
  22.             return data.toString();
  23.         }
  24.     }
  25.  
  26.  
  27.     class SLL<E>
  28.     //pravime klasa za CELATA SINGLE LINKED LISTA OD GENERICIKI TIP E
  29.     {
  30.         private SLLNode<E> first;
  31.         //first ni go oznacuva prviot element od Single Linked Lista i elementot
  32.         //se sostoi od jazol i od linker so ni e veke postaveno vo SLLNode klasata(data->podatocite i succ->linkerot)
  33.  
  34.  
  35.         //konstruktor za listata
  36.         public SLL()
  37.         {
  38.             this.first=null;
  39.             //prviot element go setirame na null->nema nisto se dodeka ne vneseme element vo lsitata
  40.         }
  41.  
  42.         public SLLNode<E> getFirst()
  43.         {
  44.             //metod so koj go zimame prviot element od listata
  45.             return this.first;
  46.         }
  47.  
  48.         public void deleteList()
  49.         {
  50.             //metod za da ja izbriseme listata
  51.             this.first=null;
  52.         }
  53.  
  54.         public int length(SLLNode<E> curr)
  55.         {
  56.             //metod za koj sakame da ja zememe dolzinata na listata
  57.             //curr ni e current element na listata
  58.             if(curr==null)
  59.             {
  60.                 //proveruvame dali momentalniot element od listata ni e ednakov na null ->dali e prazno
  61.                 return 0;
  62.                 //vrakame nula oti listata e prazna t.e nema dolzina za zimanje/vrakanje
  63.             }else{
  64.                 return 1+length(curr.succ);
  65.                 //inaku ako najdes element zgolemi go za 1 dodadi ja dolzinata od
  66.                 //momentalniot element t.e curr.succ znaci odi na nareden element
  67.                 //zgolemi ja dolzinata 1+nareden element itn itn
  68.             }
  69.         }
  70.  
  71.  
  72.         public void insertFirstElement(E element)
  73.         {
  74.             //metod za da go vnesee prviot element vo listata
  75.             SLLNode<E> temp=new SLLNode<>(element,null);
  76.             /*
  77.             bidejki imame parametar vo metoodot a toa ni e promenlivata element od tip E toa znaci deka ni e datata koja treba
  78.             da se zeme , zatoa kreirame promenliva temp odnosno temp ke ni bide jazolot koj treba da se vnese
  79.             se znae deka jazolot treba da primi data i da primi pokazuvac
  80.             vo ovoj slucaj datata so ke ni ja primi e element vnesen vo parametarot a pokazuvacot ni e null koj zasega ne pokazuva kon nisto zatoa e null
  81.              */
  82.             if(first==null)
  83.             {
  84.                 //ako prviot element e null odnosno nemame el togas temp ja zima vrednosta i e nov prv el
  85.                 first=temp;
  86.             }
  87.             else
  88.             {
  89.                 //temp.succ pokazuva kon first
  90.                 temp.succ=first;
  91.                 //first ja zima vrednosta an temp i e nov prv el
  92.                 first=temp;
  93.             }
  94.         }
  95.  
  96.         public void insertLastElement(E element)
  97.         {
  98.             if(first==null)
  99.             {
  100.                 insertFirstElement(element);
  101.             }else{
  102.                 SLLNode<E> curr=first;
  103.                 while(curr.succ!=null)
  104.                 {
  105.                     //se dodeka momentalniot element ne stasa do kraj t.e ne pokaze do null
  106.                     curr=curr.succ;
  107.                     //curr sekoas ke pokazuva kon naredniot el
  108.                 }
  109.                 SLLNode<E>temp=new SLLNode<>(element,null);
  110.                 curr.succ=temp;
  111.                 //momentanlniot el curr ke pokazuva kon temp cij pokazuvac odi do null
  112.             }
  113.         }
  114.  
  115.         public void insertBeforeElement(E element , SLLNode<E> before)
  116.         {
  117.             //vo parametri vnesovi element koj ni sodrzi data i before ni e prethodniot jazol
  118.             if(first!=null)
  119.             {
  120.                 //ako prviot element ne e null
  121.                 if(before==first)
  122.                 {
  123.                     //ako jazolot before ni e ednakov so jazolot first
  124.                     insertFirstElement(element);
  125.                     //povik na f-ja za da se vnese prviot el
  126.                 }
  127.                 else
  128.                 {
  129.                     SLLNode<E> curr=first;
  130.                     //pravime nov jazol curr koj pocnuva od first da iterira
  131.                     while(curr.succ!=before && curr.succ!=null)
  132.                     {
  133.                         //se dodeka curr ne e ist so before i se dodeka curr ne stasa do kraj  odnosno ne pokaze do null
  134.                         curr=curr.succ;
  135.                         //curr neka odi na nareden jazol
  136.                     }
  137.                     if(curr.succ==null)
  138.                     {
  139.                         //ako curr stasa do kraj
  140.                         System.out.println("Nema takov jazol!");
  141.                     }else {
  142.                         SLLNode<E> temp = new SLLNode<>(element, curr.succ);
  143.                         curr.succ = before;
  144.  
  145.                         //pravime nov jazol temp od data vo element i jazolot pokazuva na nareden element od curr
  146.                         //curr.succ zima vrednost na before
  147.                     }
  148.                 }
  149.             }else {
  150.                 System.out.println("Prazna lista!");
  151.             }
  152.         }
  153.  
  154.  
  155.         public void insertAfter(E element , SLLNode<E> after)
  156.         {
  157.             //metod za vnesuvanje jazol po nekoj drug jazol
  158.             if(after==null)
  159.             {
  160.                 System.out.println("Jazol null");
  161.             }
  162.             else
  163.             {
  164.                 SLLNode<E>temp=new SLLNode<>(element,after.succ);
  165.                 after.succ=temp;
  166.                 //temp da ja zeme vrednosta na naredniot element na koj so pokazuva after
  167.             }
  168.         }
  169.  
  170.         public E deleteFirst()
  171.         {
  172.             //metod za brizenje na prv el
  173.             if(first==null)
  174.             {
  175.                 System.out.println("Prazna lista");
  176.             }
  177.             else{
  178.                 SLLNode<E>temp=first;
  179.                 //pravime temp jazol so ke bide ednakov so prviot jazol
  180.                 first=first.succ;
  181.                 //prviot jazol da pokazuva na nareden element
  182.                 return temp.data;
  183.                 //vrati ja datata vo temp jazolot t.e prvio el
  184.             }
  185.             return null;
  186.         }
  187.  
  188.        public E delete(SLLNode<E> node)
  189.        {
  190.            if(first==null)
  191.            {
  192.                System.out.println("Prazna lista!");
  193.                return null;
  194.            }
  195.  
  196.            else
  197.            {
  198.                if(first==node)
  199.                {
  200.                    deleteFirst();
  201.                }
  202.                SLLNode<E> curr= first;
  203.                while(curr.succ != node && curr.succ!=null)
  204.                {
  205.                    curr=curr.succ;
  206.                }
  207.                if(curr.succ!=null)
  208.                {
  209.                    System.out.println("Ne postoi takov element");
  210.                    return null;
  211.                }else{
  212.                    curr.succ=node.succ;
  213.                    return node.data;
  214.                }
  215.            }
  216.        }
  217.  
  218.        public SLLNode<E>find(E element)
  219.        {
  220.            if(first==null)
  221.            {
  222.                System.out.println("Prazna lsita");
  223.                return null;
  224.            }
  225.            else
  226.            {
  227.                SLLNode<E>curr=first;
  228.                while(curr!=null && curr.data !=element)
  229.                {
  230.                    curr=curr.succ;
  231.                }
  232.                if(curr==null)
  233.                {
  234.                    System.out.println("Elementot ne postoi vo nizata");
  235.                    return null;
  236.                }
  237.                else
  238.                {
  239.                    return curr;
  240.                }
  241.            }
  242.        }
  243.  
  244.        public SLLNode<E> findaLastElement(E element)
  245.        {
  246.            if(first==null)
  247.            {
  248.                System.out.println("Prazna lista");
  249.                return null;
  250.            }
  251.            else
  252.            {
  253.                SLLNode<E>curr=first;
  254.                SLLNode<E>find=null;
  255.                
  256.                while (curr!=null)
  257.                {
  258.                    if(curr.data==element)
  259.                    {
  260.                        find=curr;
  261.                    }
  262.                    curr=curr.succ;
  263.                }
  264.                
  265.                if(find==null)
  266.                {
  267.                    System.out.println("Elementot ne postoi vo nizata");
  268.                    return null;
  269.                }else {
  270.                    return find;
  271.                }
  272.            }
  273.        }
  274.  
  275.  
  276.  
  277.     }
  278. }
Add Comment
Please, Sign In to add comment