请用c++代码写一个程序,要求实现如下功能,第一用户循环输入字符串,要求每行80个字符,若干行,当输入CTRL+E时结束结束循环,第二输入的字符串用尾插法插入到链表中,最后按行输出链表
时间: 2024-03-15 12:45:07 浏览: 191
c++设计实现一个"字符串类",要求系统设计具有一定弹性和可扩展性,使得后续维护和扩展功能更容易,增加或修改系统功能变得更简单。
5星 · 资源好评率100%
好的,以下是实现你要求的 C++ 代码:
```c++
#include <iostream>
#include <string>
using namespace std;
// 链表节点结构体
struct Node {
string str;
Node* next;
Node(string s) : str(s), next(nullptr) {}
};
int main() {
Node* head = nullptr; // 链表头指针
Node* tail = nullptr; // 链表尾指针
int count = 0; // 当前行字符个数
string line; // 当前行字符串
cout << "请输入字符串,每行80个字符,若干行,CTRL+E结束:" << endl;
// 循环读入字符串
while (getline(cin, line)) {
// 判断是否结束循环
if (line == "\x05") {
break;
}
// 循环遍历当前行字符串
for (char c : line) {
// 判断是否达到行字符个数上限
if (count == 80) {
// 将当前行字符串添加至链表中
Node* node = new Node(line.substr(0, 80));
if (head == nullptr) {
head = node;
tail = node;
} else {
tail->next = node;
tail = node;
}
// 重置计数器和当前行字符串
count = 0;
line = line.substr(80);
}
// 将字符添加至当前行字符串
count++;
line += c;
}
}
// 将最后一行字符串添加至链表中
Node* node = new Node(line);
if (head == nullptr) {
head = node;
tail = node;
} else {
tail->next = node;
tail = node;
}
// 输出链表
Node* p = head;
while (p != nullptr) {
cout << p->str << endl;
p = p->next;
}
// 释放链表内存
p = head;
while (p != nullptr) {
Node* q = p->next;
delete p;
p = q;
}
return 0;
}
```
这段代码实现了循环读入字符串,并按照每行80个字符的要求将字符串添加至链表中,最后按行输出链表。注意,这里使用了 CTRL+E 作为结束循环的标志。
阅读全文