問題C:最速連結チェーンテーブル(リニアテーブル)
1241 ワード
タイトルの説明
L 1,L 2はそれぞれ2サイクル単鎖テーブルのヘッダノードポインタであり、m,nはそれぞれL 1,L 2テーブルにおけるデータノード個数であることが知られている.2つのテーブルを最速速度で1つの先頭ノードの循環単一チェーンテーブルに統合するアルゴリズムを設計する必要がある.
入力
m=5
3 6 1 3 5
n=4.
7 10 8 4
しゅつりょく
3 6 1 3 5 7 10 8 4
サンプル入力
サンプル出力
L 1,L 2はそれぞれ2サイクル単鎖テーブルのヘッダノードポインタであり、m,nはそれぞれL 1,L 2テーブルにおけるデータノード個数であることが知られている.2つのテーブルを最速速度で1つの先頭ノードの循環単一チェーンテーブルに統合するアルゴリズムを設計する必要がある.
入力
m=5
3 6 1 3 5
n=4.
7 10 8 4
しゅつりょく
3 6 1 3 5 7 10 8 4
サンプル入力
7
3 5 1 3 4 6 0
5
5 4 8 9 5
サンプル出力
3 5 1 3 4 6 0 5 4 8 9 5
#include
struct node{
int data;
node *next;
};
void creat(node *l,int m){
node *p=l;
for(int i=0;inext =NULL;
scanf("%d",&temp->data);
p->next =temp;
p=temp;
}
p->next =l;
//delete(p);
}
void verge(node *l1,node *l2){
node *p=l1,*q=l2;
while(p->next!=l1){
p=p->next ;
}
p->next =l2->next ;
q=l2;
while(q->next !=l2){
q=q->next ;
}
q->next =l1;
delete(l2);
}
void print(node *l,int n){
node *p=l->next ;
for(int i=0;idata);
p=p->next;
}
delete(p);
}
int main(){
int m,n;
node *l1,*l2;
l1=new node;
l1->next =NULL;
scanf("%d",&m);
creat(l1,m);
scanf("%d",&n);
l2=new node;
l2->next =NULL;
creat(l2,n);
verge(l1,l2);
print(l1,m+n) ;
return 0;
}