📅  最后修改于: 2023-12-03 14:59:48.053000             🧑  作者: Mango
本文将介绍在C++中如何新增和删除元素,以及处理可能出现的问题。
在C++中,可以使用标准库的std::vector
类来实现动态数组。要在向量的末尾添加新元素,可以使用push_back()
方法。以下是一个示例:
#include <iostream>
#include <vector>
int main() {
std::vector<int> myVector;
myVector.push_back(1);
myVector.push_back(2);
myVector.push_back(3);
for (int i = 0; i < myVector.size(); i++) {
std::cout << myVector[i] << " ";
}
return 0;
}
输出将是:1 2 3
。通过调用push_back()
方法,可以在向量的末尾添加新元素。
可以使用自定义的链表类来实现链表。要在链表的末尾添加新元素,需要创建一个新节点,将新节点添加到链表的最后一个节点的next
指针上。以下是一个示例:
#include <iostream>
class Node {
public:
int data;
Node* next;
Node(int value) {
data = value;
next = nullptr;
}
};
class LinkedList {
public:
Node* head;
LinkedList() {
head = nullptr;
}
void addNode(int value) {
Node* newNode = new Node(value);
if (head == nullptr) {
head = newNode;
} else {
Node* currentNode = head;
while (currentNode->next != nullptr) {
currentNode = currentNode->next;
}
currentNode->next = newNode;
}
}
};
int main() {
LinkedList myLinkedList;
myLinkedList.addNode(1);
myLinkedList.addNode(2);
myLinkedList.addNode(3);
Node* currentNode = myLinkedList.head;
while (currentNode != nullptr) {
std::cout << currentNode->data << " ";
currentNode = currentNode->next;
}
return 0;
}
输出将是:1 2 3
。通过创建一个新节点并将其添加到链表的最后一个节点的next
指针上,可以在链表的末尾添加新元素。
要从数组中删除元素,可以使用erase()
方法。该方法需要一个迭代器作为参数,指定要删除的元素的位置。以下是一个示例:
#include <iostream>
#include <vector>
int main() {
std::vector<int> myVector {1, 2, 3, 4, 5};
// 删除第三个元素
myVector.erase(myVector.begin() + 2);
for (int i = 0; i < myVector.size(); i++) {
std::cout << myVector[i] << " ";
}
return 0;
}
输出将是:1 2 4 5
。通过调用erase()
方法并传递要删除的元素位置的迭代器,可以从数组中删除元素。
要从链表中删除元素,需要找到要删除的节点,并将其从链表中移除。以下是一个示例:
#include <iostream>
class Node {
public:
int data;
Node* next;
Node(int value) {
data = value;
next = nullptr;
}
};
class LinkedList {
public:
Node* head;
LinkedList() {
head = nullptr;
}
void addNode(int value) {
Node* newNode = new Node(value);
if (head == nullptr) {
head = newNode;
} else {
Node* currentNode = head;
while (currentNode->next != nullptr) {
currentNode = currentNode->next;
}
currentNode->next = newNode;
}
}
void deleteNode(int value) {
Node* currentNode = head;
Node* previousNode = nullptr;
while (currentNode != nullptr && currentNode->data != value) {
previousNode = currentNode;
currentNode = currentNode->next;
}
if (currentNode == nullptr) {
std::cout << "Node not found." << std::endl;
return;
}
if (previousNode == nullptr) {
head = currentNode->next;
} else {
previousNode->next = currentNode->next;
}
delete currentNode;
}
};
int main() {
LinkedList myLinkedList;
myLinkedList.addNode(1);
myLinkedList.addNode(2);
myLinkedList.addNode(3);
myLinkedList.deleteNode(2);
Node* currentNode = myLinkedList.head;
while (currentNode != nullptr) {
std::cout << currentNode->data << " ";
currentNode = currentNode->next;
}
return 0;
}
输出将是:1 3
。通过找到要删除的节点,并将其从链表中移除,可以从链表中删除元素。
以上是如何在C++中新增和删除元素的介绍。无论是数组还是链表,您都可以根据需要选择适合的数据结构来实现。希望本文对您有所帮助!