在Dart语言中,要实现链表上的Iterable类,可以按照以下步骤进行:
class Node<T> {
T value;
Node<T> next;
Node(this.value, [this.next]);
}
class LinkedList<T> {
Node<T> head;
void add(T value) {
if (head == null) {
head = Node(value);
} else {
Node<T> current = head;
while (current.next != null) {
current = current.next;
}
current.next = Node(value);
}
}
void remove(T value) {
if (head == null) {
return;
}
if (head.value == value) {
head = head.next;
return;
}
Node<T> current = head;
while (current.next != null) {
if (current.next.value == value) {
current.next = current.next.next;
return;
}
current = current.next;
}
}
}
class LinkedList<T> implements Iterable<T> {
// ...
@override
Iterator<T> get iterator => LinkedListIterator<T>(head);
}
class LinkedListIterator<T> extends Iterator<T> {
Node<T> _current;
LinkedListIterator(this._current);
@override
T get current => _current?.value;
@override
bool moveNext() {
if (_current == null) {
return false;
}
_current = _current.next;
return _current != null;
}
}
现在,我们可以使用这个链表类来创建链表,并对其进行迭代:
void main() {
LinkedList<int> list = LinkedList<int>();
list.add(1);
list.add(2);
list.add(3);
for (int value in list) {
print(value);
}
}
以上代码将输出:
1
2
3
这样,我们就在Dart语言中实现了链表上的Iterable类。
腾讯云相关产品和产品介绍链接地址:
请注意,以上链接仅为示例,具体产品和服务选择应根据实际需求进行评估和选择。
领取专属 10元无门槛券
手把手带您无忧上云