浙江大学PAT上の問題の解析の2-12.2つの順序付きチェーンテーブルシーケンスの交差


2つの非降順チェーンテーブルシーケンスS 1とS 2が知られており、設計関数は、S 1とS 2の交差する新しいチェーンテーブルS 3を構築する.
フォーマットの説明を入力:
入力は2行に分けられ、各行に複数の正の整数からなる非降順シーケンスが与えられ、シーケンスの最後を-1で表す(-1はこのシーケンスに属しない).数字はスペースで区切られています.
出力フォーマットの説明:
1行に2つの入力シーケンスの交差シーケンスを出力し、数字間はスペースで区切られ、最後に余分なスペースを持つことはできません.新しいチェーンテーブルが空の場合は「NULL」を出力します.
サンプルの入力と出力:
 
シーケンス番号
入力
しゅつりょく
1
1 2 5 -1
2 4 5 8 10 -1
2 5

2
1 3 5 -1
2 4 6 8 10 -1
NULL

3
1 2 3 4 5 -1
1 2 3 4 5 -1
1 2 3 4 5

4
3 5 7 -1
2 3 4 5 6 7 8 -1
3 5 7

5
-1
10 100 1000 -1
NULL
 
#include <cstdio>
#include <list>
#include <iostream>
using namespace std;


int main()
{

	list<int>  list1;
	list<int>  list2;
	list<int>::iterator it,it1,it2;


	int val=0;
	bool flag = false;
	while(scanf("%d",&val),val!=-1)
			list1.push_back(val);
	
	

	while(scanf("%d",&val),val!=-1)		
			list2.push_back(val);


		int t = 0;
	for (it1=list1.begin(),it2=list2.begin();it1!=list1.end()&&it2!=list2.end();)
	{

		if (*it1 < *it2)
		{
			it1++;
		}
		else if (*it1 > *it2)
		{
			it2++;
		}
		else
		{
			if (flag)
				printf(" ");
			else
				flag = true;
			printf("%d",*it1);
			it2++;
			it1++;
			t = 1;

		}
	}
    if (list1.empty()||list2.empty()||t==0)
    {
		printf("NULL");
    }
    
	printf("
"); //system("pause"); return 0; }

//この问题は确かに私の多くの工夫と时间を使って、前も最后のCASEはいつも间违って、ずっとどうして分からないで、晩に寝室に帰ってから学友と交流して(志を同じくして良友を得るのは本当にとても重要です)、やっと原因を探し当てて、前に私はずっと负けた时に缲り返しの项を削除して、しかし事実は2と2の交わりは2で2ではありません果たして問題の意味をはっきりさせることが大切だ.