Powered by:NEFU AB-IN
Link
文章目录
- HJ48 从单向链表中删除指定值的节点
- 题意
- 思路
- 代码
HJ48 从单向链表中删除指定值的节点
-
题意
输入一个单向链表和一个节点的值,从单向链表中删除等于该值的节点,删除后如果链表中无节点则返回空指针。
-
思路
单向链表的题,涉及到了 在 指定元素后面插入值 和 删除指定元素
可以利用 stl 模板类 forward_list科普一下:
-
代码
#include <algorithm> #include <bits/stdc++.h> #include <cctype> #include <cstdio> #include <queue> #include <sstream> #include <vector> using namespace std; #define int long long #undef int#define SZ(X) ((int)(X).size()) #define ALL(X) (X).begin(), (X).end() #define IOS \ios::sync_with_stdio(false); \cin.tie(nullptr); \cout.tie(nullptr) #define DEBUG(X) cout << #X << ": " << X << '\n'const int N = 30, INF = 0x3f3f3f3f; typedef pair<int, int> PII;signed main() {// freopen("Tests/input_1.txt", "r", stdin);IOS;int n, head;cin >> n >> head; //输入结点数和头结点的值forward_list<int> linklist; //创建一个单向链表linklist.push_front(head); //初始化头结点for (int i = 1; i < n; i++) {int front, back;cin >> back >> front;auto it = find(linklist.begin(), linklist.end(), front);linklist.insert_after(it, back); //逐个插入结点}int last;cin >> last; //输入要删除的结点值linklist.remove(last); //移除具有该值的节点for (auto it : linklist) {cout << it << " "; //从头到尾输出链表的值}return 0; }