c++编写程序实现链表基本操作建立链表,遍历链表,插入结点,删除结点,查找结点等操作(要求各功能以函数形式实现)
时间: 2024-12-08 22:23:06 浏览: 20
在C++中,链表是一种常见的数据结构,我们可以创建四个基本函数分别来实现链表的基本操作:
1. **创建链表**:
```cpp
struct Node {
int data;
Node* next;
};
Node* createList() {
// 如果链表为空,返回空指针
if (nullptr == head) {
head = new Node();
return head;
}
return nullptr; // 如果链表已存在,不做处理并返回
}
```
这里假设`head`是链表的头指针。
2. **遍历链表**:
```cpp
void traverseList(Node* node) {
while (node != nullptr) {
cout << node->data << " ";
node = node->next;
}
}
```
这个函数会打印出链表中的所有元素。
3. **插入节点**:
```cpp
void insertNode(int value, Node*& head) {
Node* newNode = new Node{value};
if (nullptr == head) {
head = newNode;
} else {
newNode->next = head;
head = newNode;
}
}
```
这个函数会在链表头部插入一个新节点。
4. **删除节点**:
```cpp
bool deleteNode(int value, Node*& head) {
if (nullptr == head) {
return false;
}
if (head->data == value) {
Node* temp = head;
head = head->next;
delete temp;
return true;
}
Node* curr = head;
while (curr->next != nullptr && curr->next->data != value) {
curr = curr->next;
}
if (curr->next != nullptr) {
Node* toDelete = curr->next;
curr->next = curr->next->next;
delete toDelete;
return true;
}
return false; // 如果未找到该值,返回false
}
```
此函数删除链表中第一个匹配给定值的节点。
5. **查找节点**:
```cpp
Node* findNode(int value, Node* head) {
Node* curr = head;
while (curr != nullptr) {
if (curr->data == value)
return curr;
curr = curr->next;
}
return nullptr; // 没有找到对应值,返回nullptr
}
```
这个函数会在链表中查找指定值的节点。
阅读全文