C++单向链表运算符重载
时间: 2023-09-05 19:13:03 浏览: 114
C++运算符重载
在 C++ 中,我们可以通过运算符重载来自定义单向链表的操作。下面是一个简单的单向链表类的定义和运算符重载的实现:
```cpp
#include <iostream>
using namespace std;
class Node {
public:
int data;
Node *next;
Node(int d = 0, Node *n = nullptr) {
data = d;
next = n;
}
};
class LinkedList {
public:
Node *head;
LinkedList() {
head = nullptr;
}
~LinkedList() {
Node *p;
while (head != nullptr) {
p = head;
head = head->next;
delete p;
}
}
void insert_front(int d) {
Node *p = new Node(d, head);
head = p;
}
void print() {
Node *p = head;
while (p != nullptr) {
cout << p->data << " ";
p = p->next;
}
cout << endl;
}
LinkedList& operator+=(const LinkedList &rhs) {
Node *p = head;
while (p->next != nullptr) {
p = p->next;
}
p->next = rhs.head;
return *this;
}
};
int main() {
LinkedList list1, list2;
list1.insert_front(3);
list1.insert_front(2);
list1.insert_front(1);
list1.print();
list2.insert_front(6);
list2.insert_front(5);
list2.insert_front(4);
list2.print();
list1 += list2;
list1.print();
return 0;
}
```
在上面的例子中,我们定义了一个 `LinkedList` 类和一个 `Node` 类,其中 `Node` 类表示链表中的节点。我们可以向链表中插入元素并打印链表的内容。此外,我们还重载了加号运算符 `+=`,使得可以将两个链表连接起来。
在 `+=` 运算符的实现中,我们首先找到链表的末尾节点,然后将其指向第二个链表的头节点。最后,返回当前链表的引用,以便可以进行链式操作。
在上述代码中,我们只重载了加号运算符,你可以根据需要定义其他运算符如等于运算符 `=` 和输出运算符 `<<` 等,以满足更加复杂的链表操作需求。
阅读全文