题目:L2-002 链表去重

题目:L2-002 链表去重,第1张

题目:题目详情 - L2-002 链表去重 (25 分) (pintia.cn)

大意

给定一个带整数键值的链表 L,你需要把其中绝对值重复的键值结点删掉。即对每个键值 K,只有第一个绝对值等于 K 的结点被保留。同时,所有被删除的结点须被保存在另一个链表上。例如给定 L 为 21→-15→-15→-7→15,你需要输出去重后的链表 21→-15→-7,还有被删除的链表 -15→15。 

思路

 首先要定义一个数据结构,然后还需要用到绝对值abs,容器

步骤一:

struct name
{
	string id;
	int e;
	string ne;
};
mapma;
mapse;

完整代码

#include
using namespace std;
struct name
{
	string id;
	int e;
	string ne;
};
mapma;
mapse;
int main()
{
	string h;
	cin>>h;
	int n;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		string a,c;
		int b;
		cin>>a>>b>>c;
		ma[a]={a,b,c};
	}
	vectorans;
	vectorans1;
	for(int i=1;i<=n;i++)
	{
		auto s=ma[h];
		if(se[abs(s.e)]==0)
		{
			se[abs(s.e)]=1;
			if(ans.size()!=0)
			{
				ans[ans.size()-1].ne=s.id;
			}
			ans.push_back(s);
		}
		else
		{
			if(ans1.size()!=0)
			{
				ans1[ans1.size()-1].ne=s.id;
			}
			ans1.push_back(s);
		}
		if(s.ne=="-1") break;
		h=s.ne;
	}
	ans[ans.size()-1].ne="-1";
	if(ans.size()!=0)
	{
		ans1[ans1.size()-1].ne="-1";
	}
	for(auto i:ans)
	{
		cout<

 总结

对于这类题比较难,思维和知识点上还需提升

 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/676230.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-19
下一篇 2022-04-19

发表评论

登录后才能评论

评论列表(0条)