#include<cstdio>
#include<vector>
using namespace std;
struct node{
int data, address, next;
}m[100010];
vector<int> a, b;
int main()
{
int heada, headb, n;
scanf("%d%d%d", &heada, &headb, &n);
for(int i = 0; i < n; i++)
{
int ad;
scanf("%d", &ad);
scanf("%d%d", &m[ad].data, &m[ad].next);
m[ad].address = ad;
}
int pa = heada, pb = headb;
while(pa != -1)
{
a.push_back(pa);
pa = m[pa].next;
}
while(pb != -1)
{
b.push_back(pb);
pb = m[pb].next;
}
vector<int> small, big, res;
if(a.size() > b.size())
{
big = a;
small = b;
}
else
{
big = b;
small = a;
}
int index = small.size()-1;
for(int i = 0; i < big.size(); i++)
{
res.push_back(big[i]);
if(i % 2 == 1 && index >= 0)
res.push_back(small[index--]);
}
for(int i = 0; i < res.size(); i++)
{
printf("%05d %d ", m[res[i]].address, m[res[i]].data);
if(i < res.size()-1)
printf("%05d\n", m[res[i+1]].address);
else
printf("-1\n");
}
}
PAT(甲级)2019年秋季考试 7-2 Merging Linked Lists
猜你喜欢
转载自blog.csdn.net/weixin_45486992/article/details/108391602
今日推荐
周排行