📜  C ++ |新增和删除|问题2(1)

📅  最后修改于: 2023-12-03 14:59:36.699000             🧑  作者: Mango

C++ | 新增和删除 | 问题2

在 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++ 中,我们可以使用数组、字符串和链表等数据结构来存储数据。在进行新增和删除操作时,需要根据具体的数据结构进行调整。除了这些基本的数据结构之外,还有很多其他的数据结构和算法,可以帮助我们更高效地进行数据处理和管理。因此,建议学习和掌握更多的数据结构和算法,以便在实际的开发中能够更加得心应手。