输入 每行一个正整数,当输入-1时结束。 输出 将建立好的升序单链表所有元素按从小到大的顺序依次输出。用c++编写
时间: 2024-09-17 20:04:04 浏览: 44
对任一正整数n,按从小到大的顺序输出所有不超过2^n-1的梅森数-C语言代码
在C++中,你可以使用`std::vector`来存储输入的正整数,并用双向链表(如`std::list`)来构建升序的单链表,因为插入操作在`std::list`中比数组更高效。当输入-1时,表示循环结束,这时遍历整个链表并打印出来。
首先,创建一个简单的链表节点结构:
```cpp
#include <iostream>
#include <list>
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(nullptr) {}
};
```
然后,你可以编写一个函数处理用户输入,添加到链表,并在结束时打印链表:
```cpp
void inputToList() {
std::list<ListNode*> list;
int num;
while (true) {
std::cin >> num;
if (num == -1) {
break; // 输入-1表示结束
}
list.push_back(new ListNode(num)); // 将数字添加到链表
}
// 遍历链表并打印
for (auto it = list.begin(); it != list.end(); ++it) {
std::cout << (*it)->val << " ";
}
// 别忘了释放内存
for (auto it = list.begin(); it != list.end(); ++it) {
delete *it;
}
}
int main() {
inputToList();
return 0;
}
```
当你运行这个程序时,它会等待用户的输入,然后逐个添加到链表中,直到遇到-1为止。最后,会按照顺序打印出链表中的所有整数。
阅读全文