请用c++编写程序,要求实现以下功能。第一,用户按行循环输入字符串,每行最多80个字符(包含空格),当用户输入的字符串不满80个时,将字符串长度加一位置的字符用换行代替,当用户输入回车时换行,键入CTRL+E时,结束循环,第二,将用户输入的字符串用尾插法插入链表,每个结点的数据域只储存一个字符,第三,按行输出链表
时间: 2024-03-15 20:45:36 浏览: 66
编写程序实现以下功能:从键盘输入十个整数,用冒泡法排序后按从小到大输出
好的,我来解答您的问题。
下面是用C++实现该程序的代码:
```cpp
#include <iostream>
#include <cstring>
using namespace std;
struct Node {
char data; // 每个节点存储的字符
Node* next; // 下一个节点的指针
};
int main() {
Node* head = new Node; // 创建头节点
Node* tail = head; // 定义尾指针,初始指向头节点
cout << "请按行输入字符串,每行最多80个字符(包含空格),CTRL+E结束输入:" << endl;
char c;
int i = 0;
while ((c = getchar()) != 5) { // 用CTRL+E结束输入
if (c == '\n') { // 每行结束
if (i < 80) { // 不满80个字符,用换行代替
tail->data = '\n';
tail->next = new Node;
tail = tail->next;
tail->next = nullptr;
}
i = 0; // 清空计数器
} else { // 继续输入字符
tail->data = c; // 存储字符
tail->next = new Node; // 创建新节点
tail = tail->next; // 尾指针后移
tail->next = nullptr; // 尾节点的next指针指向空
i++; // 字符计数器加一
if (i == 80) i--; // 输入超过80个字符,强制结束该行输入
}
}
cout << "您输入的字符串链表为:" << endl;
Node* p = head->next; // 指向第一个实际节点
while (p != nullptr) {
if (p->data != '\n') cout << p->data; // 输出该节点存储的字符
else cout << endl; // 换行符输出换行
p = p->next; // 指针后移
}
// 释放链表中的节点
p = head;
while (p != nullptr) {
Node* q = p->next;
delete p;
p = q;
}
return 0;
}
```
该程序首先创建一个头节点,接着循环输入字符串,每行最多80个字符(包含空格),当用户输入的字符串不满80个时,将字符串长度加一位置的字符用换行代替,用尾插法将每个字符存储在链表中。最后按行输出链表,并释放链表中的节点。
阅读全文