用链表实现字符串的替换
时间: 2024-05-10 21:15:24 浏览: 7
链表实现字符串的替换,可以按照以下步骤进行:
1. 定义链表节点结构体,包含字符数据成员和指向下一个节点的指针成员。
```
struct ListNode {
char val;
ListNode* next;
};
```
2. 定义链表类,包含链表头指针和各种操作函数,如插入节点、删除节点、遍历链表等。
```
class LinkedList {
public:
LinkedList();
~LinkedList();
void insert(char val);
void replace(char oldVal, char newVal);
void traverse();
private:
ListNode* head;
};
```
3. 在 `insert` 函数中,将新字符插入到链表末尾,可以使用尾插法。
```
void LinkedList::insert(char val) {
ListNode* newNode = new ListNode{ val, nullptr };
if (head == nullptr) {
head = newNode;
}
else {
ListNode* p = head;
while (p->next != nullptr) {
p = p->next;
}
p->next = newNode;
}
}
```
4. 在 `replace` 函数中,遍历链表,查找需要替换的字符,并替换为新字符。
```
void LinkedList::replace(char oldVal, char newVal) {
ListNode* p = head;
while (p != nullptr) {
if (p->val == oldVal) {
p->val = newVal;
}
p = p->next;
}
}
```
5. 在 `traverse` 函数中,遍历链表输出所有字符。
```
void LinkedList::traverse() {
ListNode* p = head;
while (p != nullptr) {
cout << p->val;
p = p->next;
}
}
```
完整代码如下:
```
#include <iostream>
using namespace std;
struct ListNode {
char val;
ListNode* next;
};
class LinkedList {
public:
LinkedList();
~LinkedList();
void insert(char val);
void replace(char oldVal, char newVal);
void traverse();
private:
ListNode* head;
};
LinkedList::LinkedList() {
head = nullptr;
}
LinkedList::~LinkedList() {
ListNode* p = head;
while (p != nullptr) {
ListNode* q = p;
p = p->next;
delete q;
}
}
void LinkedList::insert(char val) {
ListNode* newNode = new ListNode{ val, nullptr };
if (head == nullptr) {
head = newNode;
}
else {
ListNode* p = head;
while (p->next != nullptr) {
p = p->next;
}
p->next = newNode;
}
}
void LinkedList::replace(char oldVal, char newVal) {
ListNode* p = head;
while (p != nullptr) {
if (p->val == oldVal) {
p->val = newVal;
}
p = p->next;
}
}
void LinkedList::traverse() {
ListNode* p = head;
while (p != nullptr) {
cout << p->val;
p = p->next;
}
}
int main() {
LinkedList list;
string str = "hello, world";
for (char c : str) {
list.insert(c);
}
list.traverse();
cout << endl;
list.replace('o', 'x');
list.traverse();
cout << endl;
return 0;
}
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)