本题的关键是想到利用C++已有的forward_list容器来解题,这样会方便很多,如果自己写链表类来解题会很麻烦很耗时间。
根据每一组中的后指针和前指针,先利用find()函数找到前指针所在的迭代器的位置,利用insert_after()函数在前指针的位置后执行插入操作。
需要注意,find()函数需要包含algorithm头文件。
#include <iostream> #include <string> #include <forward_list> //#include <bits/stdc++.h> #include <algorithm> // find()函数 using namespace std; int main(){ int n = 0; cin >> n; int head_val = 0; cin >> head_val; forward_list<int> list; list.push_front(head_val); for (int i = 0; i < n * 2- 2; i = i + 2) { int back = 0, front = 0; cin >> back >> front; auto iter = find(list.begin(), list.end(), front); list.insert_after(iter, back); } int delete_val = 0; cin >> delete_val; list.remove(delete_val); // 输出 for (forward_list<int>::iterator iter = list.begin(); iter != list.end(); iter++) { cout << *iter << " "; } return 0; }