链表的操作
时间: 2023-06-28 16:09:00 浏览: 44
链表是一种常见的线性数据结构,它由一系列节点组成,每个节点都包含一个数据元素和一个指向下一个节点的指针。链表的基本操作包括插入、删除、查找等。
1. 插入操作:插入节点时,只需要将新节点插入到链表的适当位置即可。具体实现方式如下:
```
Node* Insert(Node* head, int val)
{
Node* newNode = new Node(val);
if (head == nullptr) return newNode;
Node* cur = head;
while (cur->next != nullptr)
{
cur = cur->next;
}
cur->next = newNode;
return head;
}
```
2. 删除操作:删除节点时,需要先找到待删除节点的前一个节点,然后将其指针指向待删除节点的下一个节点。具体实现方式如下:
```
Node* Delete(Node* head, int val)
{
if (head == nullptr) return nullptr;
if (head->val == val) return head->next;
Node* cur = head;
while (cur->next != nullptr && cur->next->val != val)
{
cur = cur->next;
}
if (cur->next != nullptr) cur->next = cur->next->next;
return head;
}
```
3. 查找操作:查找节点时,只需要遍历链表,直到找到目标节点即可。具体实现方式如下:
```
Node* Search(Node* head, int val)
{
Node* cur = head;
while (cur != nullptr && cur->val != val)
{
cur = cur->next;
}
return cur;
}
```
除了基本操作外,还有其他一些常见的操作,例如翻转链表、合并两个有序链表等。需要注意的是,在进行链表操作时,一定要注意指针的变化,以避免出现空指针异常等问题。