Linked List etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Linked List etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

14 Kasım 2017 Salı

Gömülü Proje Linked List

Constructor
List head ve tail için null veya boş node'lar kullanabilir.
private final Node<T> head = new Node<>(null);
private final Node<T> tail = new Node<>(null);
private int size = 0;

public List() {
  head.right = tail;
  tail.left  = head;
}
GetFirst metodu
Şöyle yaparız
Node* rest(){
  Node* nextToHead = head -> right; 
  return nextToHead;
}
GetHead metodu
Şöyle yaparız
Node* pNode = list.GetHead ();
int listSize = list.Size ();
for (int index = 0; index < listSize; index++) {
  MyData* pData = pNode->GetData ();
  if (pData->IsValid ()){
    //...Do something
    pNodex = list.GetNext (pNode);
  }
  else {
    Node* pTemp = pNode;
    pNode = list.GetNext (pNode);
    list.Delete (pTemp);
  }
}
GetHead metodu - Node
Şöyle yaparız.
public static <E> Node<E> GetHead(Node<E> current) {
  Node<E> head = null;
  while (current != null) {
    head = current;
    current = current.left;
  }
  return head;
}
Iterator
C++'taki gibi iterator kullanılmasa bile veriyapısını yöneten sınıfa iteration metodlarını koymak doğru olmaz. Mümkünse ayrı bir iterator sınıfı yazmak daha iyi.