设计一个C++链表类,它能将数字储存在链表中,并且能重载=
时间: 2024-02-25 08:53:51 浏览: 31
好的,以下是一个简单的 C++ 链表类,它能够储存数字并重载 `=` 运算符:
```c++
class LinkedList {
private:
struct Node {
int data;
Node* next;
Node(int data) : data(data), next(nullptr) {}
};
Node* head;
public:
LinkedList() : head(nullptr) {}
// 复制构造函数
LinkedList(const LinkedList& other) {
head = nullptr;
Node* curr = other.head;
while (curr != nullptr) {
add(curr->data);
curr = curr->next;
}
}
// 复制赋值运算符
LinkedList& operator=(const LinkedList& other) {
if (this == &other) {
return *this;
}
clear();
Node* curr = other.head;
while (curr != nullptr) {
add(curr->data);
curr = curr->next;
}
return *this;
}
// 添加节点
void add(int data) {
if (head == nullptr) {
head = new Node(data);
} else {
Node* curr = head;
while (curr->next != nullptr) {
curr = curr->next;
}
curr->next = new Node(data);
}
}
// 清空链表
void clear() {
while (head != nullptr) {
Node* temp = head;
head = head->next;
delete temp;
}
}
// 打印链表
void print() const {
Node* curr = head;
while (curr != nullptr) {
cout << curr->data << " ";
curr = curr->next;
}
cout << endl;
}
~LinkedList() {
clear();
}
};
```
在这个类中,我们使用了一个内部类 `Node`,它表示链表中的一个节点,包含数字数据和指向下一个节点的指针。`LinkedList` 类本身具有添加节点、清空链表和打印链表等功能。此外,我们还实现了复制构造函数和复制赋值运算符,以便我们可以方便地复制链表对象。在使用 `=` 运算符时,会调用复制赋值运算符来实现对象之间的赋值。
请注意,这只是一个简单的链表类,可能需要根据实际需求进行修改和优化。