C++构造一个链表 包括头文件 头插入 尾插入 删除 搜索 遍历 并封装函数
时间: 2024-09-29 22:08:27 浏览: 42
在C++中,构建一个简单的单向链表数据结构通常会包含以下几个步骤:
**首先,创建`Node`结构体作为链表的基本节点:**
```cpp
// Node.h
#ifndef NODE_H
#define NODE_H
#include <iostream>
class Node {
public:
int data;
Node* next;
// 构造函数
Node(int value = 0) : data(value), next(nullptr) {}
};
#endif // NODE_H
```
**然后,在`LinkedList`类中定义链表操作:**
```cpp
// LinkedList.cpp
#include "Node.h"
class LinkedList {
private:
Node* head; // 链表头指针
public:
// 构造函数
LinkedList() : head(nullptr) {}
// 插入到头部
void insertAtHead(int value) {
Node* newNode = new Node(value);
newNode->next = head;
head = newNode;
}
// 插入到尾部
void insertAtTail(int value) {
if (!head) {
head = new Node(value);
return;
}
Node* current = head;
while (current->next) {
current = current->next;
}
current->next = new Node(value);
}
// 删除元素(通过值)
bool removeElement(int value) {
if (!head || head->data == value) {
Node* temp = head;
head = head->next;
delete temp;
return true;
}
Node* current = head;
while (current->next && current->next->data != value) {
current = current->next;
}
if (current->next) {
Node* temp = current->next;
current->next = current->next->next;
delete temp;
return true;
}
return false;
}
// 搜索元素
Node* search(int value) {
Node* current = head;
while (current) {
if (current->data == value)
return current;
current = current->next;
}
return nullptr; // 如果未找到,则返回nullptr
}
// 遍历链表
void traverse() const {
Node* current = head;
while (current) {
std::cout << current->data << " ";
current = current->next;
}
std::cout << "\n";
}
};
```
**注意:**上述代码仅提供了一个基本的单链表实现,并没有包括错误处理。在实际项目中,还需要考虑内存管理、异常处理等。
阅读全文