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