请用c++写一个程序,要求实现如下功能。第一,用户循环输入长度为80的字符串,当字符串最后一个字符为^时,结束循环;第二将用户输入的字符串用尾插法,一个字符一个字符的插入到链表中,并且当结点的数据域为^时,用换行符将其代替,第三,输出链表
时间: 2024-03-15 12:44:42 浏览: 80
好的,以下是实现上述功能的 C++ 程序:
```cpp
#include <iostream>
#include <cstring>
using namespace std;
struct Node {
char data;
Node* next;
};
int main() {
Node* head = nullptr;
Node* tail = nullptr;
while (true) {
cout << "请输入一个长度为80的字符串(以 ^ 结尾):" << endl;
char str[81];
cin.getline(str, 81);
// 如果输入字符串最后一个字符为 ^,退出循环
if (str[strlen(str) - 1] == '^') {
break;
}
// 将输入的字符串逐个字符插入链表尾部
for (int i = 0; i < strlen(str); i++) {
char c = str[i];
if (c == '^') {
c = '\n'; // 将 ^ 替换为换行符
}
Node* node = new Node();
node->data = c;
node->next = nullptr;
if (head == nullptr) {
head = node;
tail = node;
} else {
tail->next = node;
tail = node;
}
}
}
// 输出链表
cout << "链表内容为:" << endl;
Node* p = head;
while (p != nullptr) {
cout << p->data;
p = p->next;
}
// 释放链表内存
p = head;
while (p != nullptr) {
Node* q = p->next;
delete p;
p = q;
}
return 0;
}
```
以上程序通过循环输入和链表尾插法实现了用户输入字符串的存储,并用换行符替换了输入字符串中的 ^。最后输出链表内容,同时释放链表内存。注意程序中的内存申请和释放,避免内存泄漏。
阅读全文