9度_タイトル1519:2つのソートされたチェーンテーブルをマージ
2536 ワード
//頭が悪いときはコードを書かないほうがいい
タイトルの説明:2つの単調に増加するチェーンテーブルを入力して、2つのチェーンテーブルの合成後のチェーンテーブルを出力して、もちろん私たちは合成後のチェーンテーブルが単調で減少しない規則を満たす必要があります.
(hint:チェーンテーブルは必ず使用してください.)
入力:
入力には複数のテストサンプルが含まれ、入力はEOFで終了します.
各試験例について、入力される第1の動作の2つの整数nおよびm(0<=n<=1000、0<=m<=1000):nは、入力される第1のチェーンテーブルの要素の個数を表し、mは、入力される第2のチェーンテーブルの要素の個数を表す.
次の行は、チェーンテーブル1の要素を表すn個の数t(1<=t<=1000000)を含む.次の行には、m個の要素、s(1<=t<=1000000)が含まれます.
出力:
各テストケースに対応し、
結果が出たら、対応するチェーンテーブルを出力します.そうでなければNULLを出力します.
サンプル入力:
5 2
1 3 5 7 9
2 4
0 0
サンプル出力:
1 2 3 4 5 7 9
NULL
タイトルの説明:2つの単調に増加するチェーンテーブルを入力して、2つのチェーンテーブルの合成後のチェーンテーブルを出力して、もちろん私たちは合成後のチェーンテーブルが単調で減少しない規則を満たす必要があります.
(hint:チェーンテーブルは必ず使用してください.)
入力:
入力には複数のテストサンプルが含まれ、入力はEOFで終了します.
各試験例について、入力される第1の動作の2つの整数nおよびm(0<=n<=1000、0<=m<=1000):nは、入力される第1のチェーンテーブルの要素の個数を表し、mは、入力される第2のチェーンテーブルの要素の個数を表す.
次の行は、チェーンテーブル1の要素を表すn個の数t(1<=t<=1000000)を含む.次の行には、m個の要素、s(1<=t<=1000000)が含まれます.
出力:
各テストケースに対応し、
結果が出たら、対応するチェーンテーブルを出力します.そうでなければNULLを出力します.
サンプル入力:
5 2
1 3 5 7 9
2 4
0 0
サンプル出力:
1 2 3 4 5 7 9
NULL
#include <iostream>
#include<cstdlib>
using namespace std;
typedef struct LNode
{
struct LNode *next;
int data;
}*Linklist;
Linklist CreateList(Linklist list,int n)
{
int num=0;
Linklist p=NULL,q=NULL;
p=(Linklist)malloc(sizeof(Linklist *));
p->next=NULL;
list=p;
for(int i=0;i<n;i++)
{
q=(Linklist)malloc(sizeof(Linklist *));
cin>>num;
q->data=num;
q->next=NULL;
p->next=q;
p=q;
}
return list;
}
Linklist MergeList(Linklist list1,Linklist list2)
{
Linklist list3=(Linklist)malloc(sizeof(Linklist *));
list3->next=NULL;
Linklist r=list3;
Linklist p=list1->next,q=list2->next;
while(p&&q)
{
if(p->data<q->data)
{
r->next=p;
r=p;
p=p->next;
}else
{
r->next=q;
r=q;
q=q->next;
}
}
if(p)
r->next=p;
if(q)
r->next=q;
return list3;
}
void TraveseList(Linklist list)
{
Linklist p=list->next;
if(p)
{
cout<<p->data;
p=p->next;
}
else
{cout<<"NULL"<<endl;return ;}
while(p)
{
cout<<' '<<p->data;
p=p->next;
}
cout<<endl;
}
int main()
{
int n,m;
while(cin>>n>>m)
{
Linklist list1=NULL,list2=NULL;
list1=CreateList(list1,n);
list2=CreateList(list2,m);
list1=MergeList(list1,list2);
TraveseList(list1);
}
return 0;
}
/**************************************************************
Problem: 1519
User: hndxztf
Language: C++
Result: Accepted
Time:400 ms
Memory:4820 kb
****************************************************************/