-
Notifications
You must be signed in to change notification settings - Fork 0
/
iterators.js
69 lines (66 loc) · 1.38 KB
/
iterators.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
/**
* A iterator which iterates in forward order over a Double Linked List.
*/
exports.ForwardDListIterator = class ForwardDListIterator {
/**
* Takes a Double Linked List and returns an iterator
*
* @param {DoubleLinkedList} ref Reference to a double linked list
*/
constructor(ref) {
this._list = ref;
this._cur = ref._head;
}
/**
* Returns a new entry of the list
*/
next() {
var obj_to_return;
if(this._cur != undefined) {
obj_to_return = {
value: this._cur.value,
done: false
};
this._cur = this._cur.next;
} else {
obj_to_return = {
value: undefined,
done: true
};
}
return obj_to_return;
}
}
/**
* A iterator which iterates in reverse order over a Double Linked List.
*/
exports.ReverseDListIterator = class ReverseDListIterator {
/**
* Takes the Double Linked list and creates a ReverseDListIterator
*
* @param {DoubleLinkedList} ref Reference to Double Linked List
*/
constructor(ref) {
this._list = ref;
this._cur = ref._tail;
}
/**
* Returns a new entry of the list
*/
next() {
var obj_to_return;
if(this._cur != undefined) {
obj_to_return = {
value: this._cur.value,
done: false
};
this._cur = this._cur.prev;
} else {
obj_to_return = {
value: undefined,
done: true
};
}
return obj_to_return;
}
}