设计一个C++链表类,它能将数字储存在链表中,并且能重载*
时间: 2024-02-25 16:55:02 浏览: 69
用C++语言编写的关于链表
好的,下面是我设计的C++链表类,可以实现将数字存储在链表中,并且重载了*运算符:
```c++
#include <iostream>
using namespace std;
class Node {
public:
int data;
Node* next;
Node(int data) {
this->data = data;
next = NULL;
}
};
class LinkedList {
private:
Node* head;
Node* tail;
public:
LinkedList() {
head = NULL;
tail = NULL;
}
void add(int data) {
Node* newNode = new Node(data);
if (head == NULL) {
head = newNode;
tail = newNode;
} else {
tail->next = newNode;
tail = newNode;
}
}
LinkedList operator*(const LinkedList& list) {
LinkedList result;
Node* current1 = head;
while (current1 != NULL) {
Node* current2 = list.head;
while (current2 != NULL) {
result.add(current1->data * current2->data);
current2 = current2->next;
}
current1 = current1->next;
}
return result;
}
void display() {
Node* current = head;
while (current != NULL) {
cout << current->data << " ";
current = current->next;
}
cout << endl;
}
};
int main() {
LinkedList list1;
list1.add(1);
list1.add(2);
list1.add(3);
LinkedList list2;
list2.add(4);
list2.add(5);
list2.add(6);
LinkedList result = list1 * list2;
result.display();
return 0;
}
```
在这个链表类中,我们重载了*运算符,使得我们可以将一个链表对象与另一个链表对象相乘,并将结果存储到一个新的链表对象中。具体来说,我们使用两个嵌套的循环来遍历两个链表中的所有元素,并将它们的乘积添加到结果链表中。
在main函数中,我们创建了两个链表对象list1和list2,并向它们中添加了一些元素。然后,我们使用*运算符将list1乘以list2,并将结果存储到result链表对象中,并使用display方法打印出result中的所有元素。
阅读全文