問題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
サンプル入力
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;
}