ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

1105 链表合并

2022-07-15 23:04:50  阅读:159  来源: 互联网

标签:nxt f2 string 合并 链表 while 1105 stoi tmpf2


代码

#include <iostream>
#include <cstdio>
#include <string>
using namespace std;

int a[100000];
string nxt[100000];
string p1[100000];
string p2[100000];
int main()
{
	string addr1,addr2;
	int n; 
	string address,naddress;
	int data;
	string f;
	string f1,f2;
	int len1=1,len2=1;
	int tmp;
	string tmpf;
	string tmpf2;
	cin>>addr1>>addr2;
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>address>>data>>naddress;
		a[stoi(address)]=data;
		nxt[stoi(address)]=naddress;
	}
	f=addr1;
	while(nxt[stoi(f)]!="-1"){	
		p1[stoi(nxt[stoi(f)])]=f;
		f=nxt[stoi(f)];
		len1++;
	}
	f1=f;
	f=addr2;
	while(nxt[stoi(f)]!="-1"){	
		p2[stoi(nxt[stoi(f)])]=f;
		f=nxt[stoi(f)];
		len2++;
	}
	f2=f;
	p1[stoi(addr1)]="-1";
	p2[stoi(addr2)]="-1";
	
	
//	tmpf2=addr2;
//	while(nxt[stoi(tmpf2)]!="-1"){	
//		cout<<tmp<<" : "<<tmpf2<<" "<<a[stoi(tmpf2)]<<" "<<nxt[stoi(tmpf2)]<<endl;
//		tmpf2=nxt[stoi(tmpf2)];
//	}
//	cout<<tmp<<" : "<<tmpf2<<" "<<a[stoi(tmpf2)]<<" "<<nxt[stoi(tmpf2)]<<endl;

//	tmpf2=f2;
//	while(p2[stoi(tmpf2)]!="-1"){	
//		nxt[stoi(tmpf2]=p2[stoi(tmpf2)];
//		tmpf2=p2[stoi(tmpf2)];
//	}
//	nxt[stoi(tmpf2]=p2[stoi(tmpf2)];

	if(len1>len2){
		f=addr1;
		tmp=2;
		tmpf2=f2;
		while(p2[stoi(tmpf2)]!="-1"){	
			nxt[stoi(tmpf2)]=p2[stoi(tmpf2)];
			tmpf2=p2[stoi(tmpf2)];
		}
		nxt[stoi(tmpf2)]=p2[stoi(tmpf2)];
		while(nxt[stoi(f2)]!="-1"){	
			if(tmp%3==0){
				tmpf=f2;
				f2=nxt[stoi(f2)];
				nxt[stoi(tmpf)]=nxt[stoi(f)];
				nxt[stoi(f)]=tmpf;
				f=nxt[stoi(f)];
			}
			else{
				f=nxt[stoi(f)];
			}
			tmp++;
		}	
		while(tmp%3!=0){
			f=nxt[stoi(f)];
			tmp++;
		}
		nxt[stoi(f2)]=nxt[stoi(f)];
		nxt[stoi(f)]=f2;
		f=addr1;
	}
	else{
		f=addr2;
		tmp=2;
		tmpf2=f1;
		while(p1[stoi(tmpf2)]!="-1"){	
			nxt[stoi(tmpf2)]=p1[stoi(tmpf2)];
			tmpf2=p1[stoi(tmpf2)];
		}
		nxt[stoi(tmpf2)]=p1[stoi(tmpf2)];
		while(nxt[stoi(f1)]!="-1"){	
//			cout<<tmp<<" : "<<f<<" "<<a[stoi(f)]<<" "<<nxt[stoi(f)]<<endl;
			if(tmp%3==0){
				tmpf=f1;
				f1=nxt[stoi(f1)];
				nxt[stoi(tmpf)]=nxt[stoi(f)];
				nxt[stoi(f)]=tmpf;
				f=nxt[stoi(f)];
			}
			else{
				f=nxt[stoi(f)];
			}
			tmp++;
//			tmpf2=addr2;
//			while(nxt[stoi(tmpf2)]!="-1"){	
//				cout<<tmp<<" : "<<tmpf2<<" "<<a[stoi(tmpf2)]<<" "<<nxt[stoi(tmpf2)]<<endl;
//				tmpf2=nxt[stoi(tmpf2)];
//			}
//			cout<<tmp<<" : "<<tmpf2<<" "<<a[stoi(tmpf2)]<<" "<<nxt[stoi(tmpf2)]<<endl;
		}
		while(tmp%3!=0){
//			cout<<tmp<<" : "<<f<<" "<<a[stoi(f)]<<" "<<nxt[stoi(f)]<<endl;
			f=nxt[stoi(f)];
			tmp++;
		}
		nxt[stoi(f1)]=nxt[stoi(f)];
		nxt[stoi(f)]=f1;
		f=addr2;
	}
	while(nxt[stoi(f)]!="-1"){	
		cout<<f<<" "<<a[stoi(f)]<<" "<<nxt[stoi(f)]<<endl;
		f=nxt[stoi(f)];
	}
	cout<<f<<" "<<a[stoi(f)]<<" "<<nxt[stoi(f)]<<endl;
	

	return 0;
}

标签:nxt,f2,string,合并,链表,while,1105,stoi,tmpf2
来源: https://www.cnblogs.com/wodeblog1982/p/16483007.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有