📅  最后修改于: 2023-12-03 14:59:36.699000             🧑  作者: Mango
在 C++ 中,我们经常需要对数组、字符串、链表等数据结构进行插入和删除操作。其中,插入操作可以将新的元素插入到数据结构中的指定位置,而删除操作可以将指定位置的元素从数据结构中移除。在本文中,我们将介绍 C++ 中的新增和删除操作,以及如何使用它们来实现各种数据结构。
在 C++ 中,我们可以使用数组来存储一组具有相同类型的元素。数组的新增和删除操作都非常简单。在进行新增操作时,我们只需要将新的元素插入到指定位置即可。具体实现方式如下:
int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
// 在位置 5 上插入新的元素 100
for (int i = 9; i >= 5; i--)
arr[i + 1] = arr[i];
arr[5] = 100;
// 从位置 5 上删除元素
for (int i = 5; i <= 8; i++)
arr[i] = arr[i + 1];
这段代码中,我们首先在位置 5 上插入了新的元素 100,然后从位置 5 上删除了一个元素。其中,新增操作需要先将数组中的元素往后移动一位,然后再将新的元素插入到指定位置上。而删除操作则需要将数组中的元素往前移动一位,同时删除指定位置上的元素。
需要注意的是,数组的大小是固定的,因此在进行新增操作时,需要确保数组不会溢出。在向数组中插入新的元素时,必须要先对数组进行扩容,否则可能会导致数据的重叠和数据丢失。
字符串是一种特殊的数组,其操作与普通数组类似。在 C++ 中,我们可以使用 string 类型来表示字符串,该类型已经默认实现了字符串的新增和删除操作。具体的实现方式如下:
#include <iostream>
#include <string>
using namespace std;
int main()
{
// 定义一个字符串
string msg = "Hello, World!";
// 在位置 7 上插入新的字符
msg.insert(7, ", C++");
cout << msg << endl; // 输出 "Hello, C++, World!"
// 删除指定位置上的字符
msg.erase(7, 5);
cout << msg << endl; // 输出 "Hello, World!"
return 0;
}
这段代码中,我们首先定义了一个字符串 msg,然后在位置 7 上插入了新的字符 ", C++",最后又从位置 7 上删除了 5 个字符。需要注意的是,字符串的新增和删除操作都非常方便,无需手动移动字符,也无需担心数组大小是否合适。
链表是一种基本的动态数据结构,其节点的个数可以根据需要动态地调整。在 C++ 中,我们可以使用指针来实现链表的新增和删除操作。具体的实现方式如下:
#include <iostream>
using namespace std;
struct Node
{
int value;
Node* next;
};
int main()
{
// 定义一个链表
Node *head = new Node{1, nullptr};
Node *cur = head;
for (int i = 2; i <= 10; i++)
{
Node *node = new Node{i, nullptr};
cur->next = node;
cur = node;
}
// 在位置 5 上插入新的节点
Node *node = new Node{100, nullptr};
cur = head;
for (int i = 1; i < 5; i++)
cur = cur->next;
node->next = cur->next;
cur->next = node;
// 删除指定位置上的节点
cur = head;
for (int i = 1; i < 5; i++)
cur = cur->next;
Node *delNode = cur->next;
cur->next = delNode->next;
delete delNode;
return 0;
}
这段代码中,我们首先定义了一个链表,然后在位置 5 上插入了新的节点,并从位置 5 上删除了一个节点。需要注意的是,在进行新增和删除操作时,需要确保指针指向的位置是正确的。如果指针指向了无效的地址,可能会导致异常情况的发生。
在 C++ 中,我们可以使用数组、字符串和链表等数据结构来存储数据。在进行新增和删除操作时,需要根据具体的数据结构进行调整。除了这些基本的数据结构之外,还有很多其他的数据结构和算法,可以帮助我们更高效地进行数据处理和管理。因此,建议学习和掌握更多的数据结构和算法,以便在实际的开发中能够更加得心应手。