设计并实现一个单链表类。
时间: 2024-02-22 12:54:47 浏览: 16
好的,我可以帮你设计并实现一个单链表类,以下是一个简单的实现:
```C++
#include<iostream>
using namespace std;
template <class T>
class Node {
public:
T data;
Node<T>* next;
Node(T data) {
this->data = data;
next = nullptr;
}
};
template <class T>
class LinkedList {
private:
Node<T>* head;
public:
LinkedList() {
head = nullptr;
}
~LinkedList() {
Node<T>* current = head;
while (current != nullptr) {
Node<T>* temp = current;
current = current->next;
delete temp;
}
}
void add(T data) {
if (head == nullptr) {
head = new Node<T>(data);
return;
}
Node<T>* current = head;
while (current->next != nullptr) {
current = current->next;
}
current->next = new Node<T>(data);
}
void remove(T data) {
if (head == nullptr) {
return;
}
if (head->data == data) {
Node<T>* temp = head;
head = head->next;
delete temp;
return;
}
Node<T>* current = head;
while (current->next != nullptr) {
if (current->next->data == data) {
Node<T>* temp = current->next;
current->next = current->next->next;
delete temp;
return;
}
current = current->next;
}
}
void print() {
Node<T>* current = head;
while (current != nullptr) {
cout << current->data << " ";
current = current->next;
}
cout << endl;
}
};
int main() {
LinkedList<int> list;
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.print();
list.remove(3);
list.print();
return 0;
}
```
以上代码中,我们定义了一个单链表的节点类`Node`,以及一个单链表的类`LinkedList`。`LinkedList`类包括添加元素`add`、删除元素`remove`和打印链表`print`三个基本操作。在`remove`操作中,我们首先处理头节点的情况,然后遍历链表找到要删除的节点并删除。在`print`操作中,我们遍历整个链表并输出每个节点的值。