请用c++编写程序,要求实现以下功能。第一,用户按行循环输入字符串,每行最多80个字符(包含空格),当用户输入回车时换行,键入CTRL+E时,结束循环,第二,将用户输入的字符串用尾插法插入链表,第三,按行输出链表
时间: 2024-03-15 15:45:26 浏览: 46
好的,我来解答您的问题。
下面是用C++实现该程序的代码:
```cpp
#include <iostream>
#include <cstring>
using namespace std;
struct Node {
char data[81]; // 每个节点存储的字符串
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') { // 每行结束
tail->next = new Node; // 创建新节点
tail = tail->next; // 尾指针后移
tail->next = nullptr; // 尾节点的next指针指向空
i = 0; // 清空计数器
} else { // 继续输入字符
tail->data[i++] = c; // 存储字符
if (i == 80) { // 输入超过80个字符,强制结束该行输入
tail->next = new Node;
tail = tail->next;
tail->next = nullptr;
i = 0;
}
}
}
cout << "您输入的字符串链表为:" << endl;
Node* p = head->next; // 指向第一个实际节点
while (p != nullptr) {
cout << p->data << endl; // 输出该节点存储的字符串
p = p->next; // 指针后移
}
// 释放链表中的节点
p = head;
while (p != nullptr) {
Node* q = p->next;
delete p;
p = q;
}
return 0;
}
```
该程序首先创建一个头节点,接着循环输入字符串,每行最多80个字符(包含空格),当用户输入回车时,创建一个新节点并用尾插法插入链表。最后按行输出链表,并释放链表中的节点。
阅读全文