C++链表
时间: 2023-07-10 19:12:56 浏览: 105
链表是一种常用的数据结构,C++中可以通过类来实现链表。链表中的每个节点包含一个数据元素和一个指向下一个节点的指针。下面是一个简单的链表类的示例:
```c++
class LinkedList {
private:
struct Node {
int data;
Node* next;
Node(int val) : data(val), next(nullptr) {}
};
Node* head;
public:
LinkedList() : head(nullptr) {}
~LinkedList() {
while (head) {
Node* temp = head;
head = head->next;
delete temp;
}
}
void add(int val) {
Node* newNode = new Node(val);
if (!head) {
head = newNode;
} else {
Node* temp = head;
while (temp->next) {
temp = temp->next;
}
temp->next = newNode;
}
}
void remove(int val) {
if (!head) {
return;
}
if (head->data == val) {
Node* temp = head;
head = head->next;
delete temp;
return;
}
Node* temp = head;
while (temp->next && temp->next->data != val) {
temp = temp->next;
}
if (temp->next && temp->next->data == val) {
Node* delNode = temp->next;
temp->next = delNode->next;
delete delNode;
}
}
void print() {
Node* temp = head;
while (temp) {
std::cout << temp->data << " ";
temp = temp->next;
}
std::cout << std::endl;
}
};
```
在这个示例中,我们定义了一个 `LinkedList` 类,它包含一个指向链表头节点的指针 `head`。我们可以通过 `add()` 方法向链表中添加元素,通过 `remove()` 方法删除元素,通过 `print()` 方法打印链表中的所有元素。在 `add()` 方法中,我们创建一个新的节点,如果链表为空,则将 `head` 指向新节点;否则,我们遍历整个链表,找到最后一个节点,并将其 `next` 指针指向新节点。在 `remove()` 方法中,我们遍历整个链表,找到要删除的元素,并将其从链表中删除。在 `print()` 方法中,我们遍历整个链表,依次打印每个元素。
使用链表时需要注意内存管理,需要在销毁链表时释放每个节点占用的内存。在示例中,我们通过 `~LinkedList` 析构函数来释放内存。
阅读全文