题解 | #从单向链表中删除指定值的节点#
从单向链表中删除指定值的节点
https://www.nowcoder.com/practice/f96cd47e812842269058d483a11ced4f
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int n;
cin>>n;
int head;
cin>>head;
vector<int> nums;
//将头节点加进数组中
nums.push_back(head);
for(int i=0;i<n-1;i++)
{
int x,y;
cin>>x>>y;
//在数组中找到前一个元素的位置
auto it=find(nums.begin(),nums.end(),y);
//如果是数组的最后一个位置,直接推进数组中,否则插入到该位置的后面
if(it==nums.end())
nums.push_back(x);
else
nums.insert(it+1, x);
}
int val;
//输入要删除的元素
cin>>val;
int left=0;
for(int i=0;i<n;i++)
{
if(nums[i]!=val)
{
nums[left++]=nums[i];
}
}
for(int i=0;i<left;i++)
cout<<nums[i]<<" ";
return 0;
}
