Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class SingleLista {
- class SLLNode<E>
- {
- //pravime klassa za da go pretstavime jazolot i negovite elementi
- protected E data;
- //data vo jazolot
- protected SLLNode<E> succ;
- //linker vo jazolot
- //konstruktor za jazolot
- public SLLNode(E data , SLLNode succ)
- {
- this.data=data;
- this.succ=succ;
- }
- //toString metod
- public String toString()
- {
- return data.toString();
- }
- }
- class SLL<E>
- //pravime klasa za CELATA SINGLE LINKED LISTA OD GENERICIKI TIP E
- {
- private SLLNode<E> first;
- //first ni go oznacuva prviot element od Single Linked Lista i elementot
- //se sostoi od jazol i od linker so ni e veke postaveno vo SLLNode klasata(data->podatocite i succ->linkerot)
- //konstruktor za listata
- public SLL()
- {
- this.first=null;
- //prviot element go setirame na null->nema nisto se dodeka ne vneseme element vo lsitata
- }
- public SLLNode<E> getFirst()
- {
- //metod so koj go zimame prviot element od listata
- return this.first;
- }
- public void deleteList()
- {
- //metod za da ja izbriseme listata
- this.first=null;
- }
- public int length(SLLNode<E> curr)
- {
- //metod za koj sakame da ja zememe dolzinata na listata
- //curr ni e current element na listata
- if(curr==null)
- {
- //proveruvame dali momentalniot element od listata ni e ednakov na null ->dali e prazno
- return 0;
- //vrakame nula oti listata e prazna t.e nema dolzina za zimanje/vrakanje
- }else{
- return 1+length(curr.succ);
- //inaku ako najdes element zgolemi go za 1 dodadi ja dolzinata od
- //momentalniot element t.e curr.succ znaci odi na nareden element
- //zgolemi ja dolzinata 1+nareden element itn itn
- }
- }
- public void insertFirstElement(E element)
- {
- //metod za da go vnesee prviot element vo listata
- SLLNode<E> temp=new SLLNode<>(element,null);
- /*
- bidejki imame parametar vo metoodot a toa ni e promenlivata element od tip E toa znaci deka ni e datata koja treba
- da se zeme , zatoa kreirame promenliva temp odnosno temp ke ni bide jazolot koj treba da se vnese
- se znae deka jazolot treba da primi data i da primi pokazuvac
- 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
- */
- if(first==null)
- {
- //ako prviot element e null odnosno nemame el togas temp ja zima vrednosta i e nov prv el
- first=temp;
- }
- else
- {
- //temp.succ pokazuva kon first
- temp.succ=first;
- //first ja zima vrednosta an temp i e nov prv el
- first=temp;
- }
- }
- public void insertLastElement(E element)
- {
- if(first==null)
- {
- insertFirstElement(element);
- }else{
- SLLNode<E> curr=first;
- while(curr.succ!=null)
- {
- //se dodeka momentalniot element ne stasa do kraj t.e ne pokaze do null
- curr=curr.succ;
- //curr sekoas ke pokazuva kon naredniot el
- }
- SLLNode<E>temp=new SLLNode<>(element,null);
- curr.succ=temp;
- //momentanlniot el curr ke pokazuva kon temp cij pokazuvac odi do null
- }
- }
- public void insertBeforeElement(E element , SLLNode<E> before)
- {
- //vo parametri vnesovi element koj ni sodrzi data i before ni e prethodniot jazol
- if(first!=null)
- {
- //ako prviot element ne e null
- if(before==first)
- {
- //ako jazolot before ni e ednakov so jazolot first
- insertFirstElement(element);
- //povik na f-ja za da se vnese prviot el
- }
- else
- {
- SLLNode<E> curr=first;
- //pravime nov jazol curr koj pocnuva od first da iterira
- while(curr.succ!=before && curr.succ!=null)
- {
- //se dodeka curr ne e ist so before i se dodeka curr ne stasa do kraj odnosno ne pokaze do null
- curr=curr.succ;
- //curr neka odi na nareden jazol
- }
- if(curr.succ==null)
- {
- //ako curr stasa do kraj
- System.out.println("Nema takov jazol!");
- }else {
- SLLNode<E> temp = new SLLNode<>(element, curr.succ);
- curr.succ = before;
- //pravime nov jazol temp od data vo element i jazolot pokazuva na nareden element od curr
- //curr.succ zima vrednost na before
- }
- }
- }else {
- System.out.println("Prazna lista!");
- }
- }
- public void insertAfter(E element , SLLNode<E> after)
- {
- //metod za vnesuvanje jazol po nekoj drug jazol
- if(after==null)
- {
- System.out.println("Jazol null");
- }
- else
- {
- SLLNode<E>temp=new SLLNode<>(element,after.succ);
- after.succ=temp;
- //temp da ja zeme vrednosta na naredniot element na koj so pokazuva after
- }
- }
- public E deleteFirst()
- {
- //metod za brizenje na prv el
- if(first==null)
- {
- System.out.println("Prazna lista");
- }
- else{
- SLLNode<E>temp=first;
- //pravime temp jazol so ke bide ednakov so prviot jazol
- first=first.succ;
- //prviot jazol da pokazuva na nareden element
- return temp.data;
- //vrati ja datata vo temp jazolot t.e prvio el
- }
- return null;
- }
- public E delete(SLLNode<E> node)
- {
- if(first==null)
- {
- System.out.println("Prazna lista!");
- return null;
- }
- else
- {
- if(first==node)
- {
- deleteFirst();
- }
- SLLNode<E> curr= first;
- while(curr.succ != node && curr.succ!=null)
- {
- curr=curr.succ;
- }
- if(curr.succ!=null)
- {
- System.out.println("Ne postoi takov element");
- return null;
- }else{
- curr.succ=node.succ;
- return node.data;
- }
- }
- }
- public SLLNode<E>find(E element)
- {
- if(first==null)
- {
- System.out.println("Prazna lsita");
- return null;
- }
- else
- {
- SLLNode<E>curr=first;
- while(curr!=null && curr.data !=element)
- {
- curr=curr.succ;
- }
- if(curr==null)
- {
- System.out.println("Elementot ne postoi vo nizata");
- return null;
- }
- else
- {
- return curr;
- }
- }
- }
- public SLLNode<E> findaLastElement(E element)
- {
- if(first==null)
- {
- System.out.println("Prazna lista");
- return null;
- }
- else
- {
- SLLNode<E>curr=first;
- SLLNode<E>find=null;
- while (curr!=null)
- {
- if(curr.data==element)
- {
- find=curr;
- }
- curr=curr.succ;
- }
- if(find==null)
- {
- System.out.println("Elementot ne postoi vo nizata");
- return null;
- }else {
- return find;
- }
- }
- }
- }
- }
Add Comment
Please, Sign In to add comment