题解 | 遍历链表
#include <bits/stdc++.h> using namespace std; struct Node { int data; Node* next; Node(int x) : data(x), next(nullptr) {} // 构造函数初始化节点 }; int main() { int n; while (cin >> n) { Node* a = new Node(0); // 创建哑节点 Node* r = a; // 尾指针指向哑节点 while (n--) { int x; cin >> x; Node* p = new Node(x); // 为新节点分配内存并初始化 if (a->next == nullptr) { // 链表为空时直接插入 a->next = p; r = p; } else { if (p->data >= r->data) { // 插入到链表末尾 r->next = p; r = p; } else { // 插入到合适的位置 Node* k = a; while (k->next != nullptr) { if (k->next->data >= p->data) { p->next = k->next; k->next = p; break; } k = k->next; } } } } Node* k = a->next; while (k != nullptr) { // 输出链表内容 cout << k->data << " "; k = k->next; } cout << endl; // 释放链表内存 Node* temp; while (a != nullptr) { temp = a; a = a->next; delete temp; } } return 0; }
一定要记得初始化和释放内存,否则是失败的