写一个用c++字符串链式存储实现插入删除置换的程序
时间: 2024-10-08 20:01:07 浏览: 26
在C++中,我们可以使用指针和结构体来创建一个简单的字符串链表数据结构,用于插入、删除和替换操作。首先,定义一个节点结构:
```cpp
#include <string>
struct Node {
std::string data;
Node* next;
Node(const std::string& str = "") : data(str), next(nullptr) {}
};
```
接下来,我们创建链表类,包含插入、删除和替换功能:
```cpp
class StringLinkedList {
private:
Node* head;
public:
// 构造函数
StringLinkedList() : head(nullptr) {}
// 插入新元素到链表末尾
void insert(const std::string& str) {
if (head == nullptr) {
head = new Node(str);
} else {
Node* current = head;
while (current->next != nullptr) {
current = current->next;
}
current->next = new Node(str);
}
}
// 删除指定元素
bool remove(const std::string& str) {
if (head == nullptr) return false; // 如果链表为空
if (head->data == str) { // 首节点即是要删除的
Node* temp = head;
head = head->next;
delete temp;
return true;
}
Node* current = head;
while (current->next != nullptr && current->next->data != str) {
current = current->next;
}
if (current->next == nullptr) return false; // 没找到要删除的节点
Node* temp = current->next;
current->next = current->next->next;
delete temp;
return true;
}
// 替换指定元素
void replace(const std::string& oldStr, const std::string& newStr) {
if (remove(oldStr)) {
insert(newStr);
}
}
// 打印链表内容
void display() {
Node* current = head;
while (current != nullptr) {
std::cout << current->data << " -> ";
current = current->next;
}
std::cout << "nullptr" << std::endl;
}
};
```
现在你可以创建一个`StringLinkedList`实例并测试其功能:
```cpp
int main() {
StringLinkedList list;
list.insert("Hello");
list.insert("World");
list.display(); // 输出: Hello -> World -> nullptr
list.replace("World", "Universe");
list.display(); // 输出: Hello -> Universe -> nullptr
list.remove("Hello");
list.display(); // 输出: Universe -> nullptr
return 0;
}
```
阅读全文