本题的关键是想到利用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;
}

京公网安备 11010502036488号