C++单向链表正向迭代器实现
时间: 2024-10-17 22:12:45 浏览: 38
C++中的单向链表正向迭代器是一种用于遍历链表数据结构的对象,它提供了一种在链表上“前进”(next)的方式,从头节点开始逐个访问元素。以下是基本的单向链表正向迭代器的实现:
```cpp
template <typename T>
class Node {
public:
T data;
Node* next;
// 构造函数等
};
template <typename T>
class Iterator {
private:
Node<T>* current; // 当前指向的节点
public:
Iterator(Node<T>* node = nullptr) : current(node) {}
// 迭代器的基本操作
Iterator& operator++() { // 自增
if (current != nullptr)
current = current->next;
return *this;
}
T operator*() const { // 返回当前节点的数据
return current->data;
}
bool operator==(const Iterator& other) const { // 判断两个迭代器是否相等
return current == other.current;
}
bool operator!=(const Iterator& other) const { // 取反判断
return !(*this == other);
}
};
// 使用示例
void printList(Iterator<int>& iter) {
while (iter != nullptr) {
std::cout << iter++ << " ";
}
}
```
在这个例子中,`Node`是链表的实际节点,`Iterator`是一个模板类,它有一个私有成员`current`存储指向当前节点的指针。通过定义`operator++()`、`operator*()`以及比较运算符,我们可以方便地在链表上进行向前移动并访问其数据。
阅读全文