编写一个程序,读入一行字符,且每个字符存入一个结点,按输入顺序建立一个链表的结点序列,然后再按相反顺序输出并释放全部结点。
时间: 2023-06-12 19:04:23 浏览: 127
两个一元多项式相加的程序
5星 · 资源好评率100%
可以按照以下步骤来实现所需程序:
1. 定义结点结构体,包含字符数据和指向下一个结点的指针。
2. 读入一行字符并逐个创建结点,将它们链接在一起形成链表。
3. 从链表头开始遍历整个链表,同时将每个结点插入到新链表的头部,这样就能够倒序输出链表。
4. 释放全部结点,以防止内存泄漏。
下面是一个可能的实现代码:
```c++
#include <iostream>
#include <cstring>
using namespace std;
// 结点结构体定义
struct Node {
char data;
Node* next;
};
int main() {
// 读入一行字符
char line[100];
cin.getline(line, sizeof(line));
// 建立链表
Node* head = nullptr;
Node* tail = nullptr;
for (int i = 0; i < strlen(line); i++) {
Node* node = new Node;
node->data = line[i];
node->next = nullptr;
if (tail == nullptr) {
head = node;
tail = node;
} else {
tail->next = node;
tail = node;
}
}
// 倒序输出链表并释放全部结点
while (head != nullptr) {
Node* node = head;
head = head->next;
cout << node->data;
delete node;
}
cout << endl;
return 0;
}
```
这份代码使用了一个尾指针来方便地将新结点添加到链表末尾。另外,需要注意的是,这份代码只处理了单行字符输入,如果需要处理多行输入,还需要用循环来不断读入新行并处理。
阅读全文