Constructor
List head ve tail için null veya boş node'lar kullanabilir.
Şöyle yaparız
Şöyle yaparız
Şöyle yaparız.
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.
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 ();GetHead metodu - Node
int listSize = list.Size ();
for (int index = 0; index < listSize; index++) {
MyData* pData = pNode->GetData ();
if (pData->IsValid ()){
//...Do somethingpNodex = list.GetNext (pNode);}else {
Node* pTemp = pNode;pNode = list.GetNext (pNode);list.Delete (pTemp);}}
Şö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;
}
IteratorC++'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.
Hiç yorum yok:
Yorum Gönder