Professional Documents
Culture Documents
Seminar 3 Listat
Seminar 3 Listat
Pyetje teorike
1. Çfarë është një listë e lidhur një-drejtimore? Cilët janë elementët përbërës të saj? Çfarë
përmban secila nyje?
2. Cilat janë disa avantazhe dhe disavantazhe të përdorimit të një liste të lidhur një-drejtimore
në krahasim me vektorët (arrays)?
Implementimi në Java
Klasat që duhet të implementojmë për të përcaktuar strukturën e një liste të lidhur një-
drejtimore janë:
Klasa ListNode
Klasa LinkedListIterator
Klasa LinkedList
ListNode.java
LinkedListIterator.java
package LinkedList;
public LinkedListIterator ()
{
current=null;
}
public LinkedListIterator (ListNode<AnyType> node)
{
current=node;
}
LinkedList.java
public LinkedList()
{
header=new ListNode<AnyType>(null);
}
public boolean isEmpty()
{
return header.next==null;
}
public void makeEmpty()
{
header.next=null;
}
LinkedListIterator<AnyType> itr=new
LinkedListIterator<AnyType>(node);
return itr;
}
if(itr.current.next!=null)
{
itr.current.next=itr.current.next.next;
}
}
}
System.out.println();
}
}
Listat e Lidhura dy-drejtimore
Paraqitja vizuale
Implementimi është i ngjashëm me listat një-drejtimore, por në këtë rast shtohet referenca
previous për çdo nyje, si edhe një nyje në fund trailer që tregon fundin e listës.
Implementimi në Java
DoublyListNode.java
public class DoublyListNode<AnyType extends Comparable<?>> {
DoublyLinkedListIterator.java
package DoublyLinkedList;
public DoublyLinkedListIterator ()
{
current=null;
}
public DoublyLinkedListIterator (DoublyListNode<AnyType> node)
{
current=node;
}
DoublyLinkedList.java
public DoublyLinkedList()
{
header=new DoublyListNode<AnyType>(null);
trailer=new DoublyListNode<AnyType>(null);
header.next=trailer;
trailer.prev=header;
}
1. Ndertoni nje funksion qe kthen shumen e elementeve ne nje liste te lidhur njedrejtimore.
2. Ndertoni nje funksion qe llogarit dhe kthen gjatesine e nje liste te lidhur njedrejtimore.
3. Ndertoni nje funksion qe merr nje numer te plote k dhe kthen vleren e nyjes se k-te te nje
liste te lidhur njedrejtimore nqs ajo eksiston.
4. Nje funksion duhet te gjeje dhe te fshije nyjen me vlere k nga nje liste. (Provoni ta zgjidhni
pa perdorur iterator, vetëm duke kaluar nga një nyje në tjetrën)
5. Ndertoni nje funksion qe shton ne nje liste te lidhur njedrejtimore nje nyje me vlere k ne
pozicionin e j-te ne liste. (j eshte numer i plote).
6. Ndertoni nje funksion qe merr dy pozicione ne nje liste te lidhur njedrejtimore dhe kthen
numrin e elementeve midis tyre.
7. Ndertoni nje funksion qe zhvendos maksimumin ne fillim te listes dhe minimumin ne fund
te listes se lidhur njedrejtimore.
8. Ndertoni nje funksion qe fshin nga lista e lidhur njedrejtimore L te gjithe elementet qe
ndodhen ne nje liste te dyte njedrejtimore P.
a. Lista L dhe lista P jane te parenditura
b. Lista L dhe lista P jane te renditura ne rend rrites.
9. Ndertoni nje funksion qe kthen mbrapsht nje liste te lidhur njedrejtimore pa perdorur liste
te re. Lista eshte:
a. njedrejtimore.
b. dydrejtimore
c. njedrejtimore rrethore
d. dydrejtimore rrethore
public void inverto() {
ListNode<AnyType>
aktual=header.next;
ListNode<AnyType> para=
null, pas;
while(aktual!=null) {
pas=aktual.next;
aktual.next=para;
para=aktual;
aktual=pas;
}
header.next=para;
}
10. Ndertoni nje funksion qe kthen true nqs nje liste e lidhur eshte palindrome dhe false ne te
kundert. Lista eshte:
a. njedrejtimore.
b. dydrejtimore
c. njedrejtimore rrethore
d. dydrejtimore rrethore
11. Ndertoni nje funksion qe shton nje element ne nje liste te lidhur te renditur pa prishur
renditjen. Lista eshte:
a. njedrejtimore.
b. dydrejtimore
c. njedrejtimore rrethore
d. dydrejtimore rrethore
12. Shkruani funksionin qe nderron vendet e dy elementeve fqinje ne liste. Lista eshte:
a. e lidhur nje drejtimore
b. lidhur dy drejtimore
13. Ndertoni nje funksion qe konverton nje liste te lidhur njedrejtimore ne nje liste te lidhur
njedrejtimore rrethore.
14. Në kodin e DoublyLinkedList implementoni një metodë shtonëfund që shton nyje te reja
në fund të listës.