Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

16_II / из двух упор один

.cpp
Скачиваний:
19
Добавлен:
10.02.2015
Размер:
1.47 Кб
Скачать
#include <iostream.h>
struct sp
{
	int data;
	sp *next;
};

void creat_sp(sp *&nach, int n)
{
	sp *p;
	nach=NULL;
	int i;
	for (i=1; i<=n; i++)
	{
		p=new sp;
		cin>>p->data;
		p->next=nach;
		nach=p;
	}
}

void pokaz_sp(sp *nach)
{
	sp *p=nach;
	cout<<"spisok=";
	while (p!=NULL)
	{
		cout<<p->data<<" ";
		p=p->next;
	}
	cout<<endl;
}

void slit(sp *nach1,sp * nach2,sp *&nach)
{
	sp * p= nach1, *q=nach2;
	sp *t;
	nach = NULL;
	while ((p!=NULL)&&(q!=NULL))
	{
		if(p->data<q->data)
		{
			t=new sp;
			t->data=p->data;
			t->next=nach;
			nach=t;
			p=p->next;
		}
		else
		{
			t=new sp;
			t->data=q->data;
			t->next=nach;
			nach=t;
			q=q->next;
		}
	}
	while(p!=NULL)
	{
		t=new sp;
		t->data=p->data;
		t->next=nach;
		nach=t;
		p=p->next;
	}
	while (q!=NULL)
	{
		t=new sp;
		t->data=q->data;
		t->next=nach;
		nach=t;
		q=q->next;
	}
}

void sort(sp *nach)
{
	sp *p;
	bool l=false;
	while(!l)
	{
		l=true;
		p=nach;
		while(p->next!=NULL)
		{
			if(p->data>(p->next)->data)
			{
				l=false;
				int t=p->data;
				p->data=(p->next)->data;
				(p->next)->data=t;
			}
			p=p->next;
		}
	}
}

int main ()
{
	sp *nach1, *nach2, *nach;
	int n;
	int m;
	cout<<"n:";
	cin>>n;
	cout<<"m:";
	cin>>m;
	creat_sp(nach1, n);
	pokaz_sp(nach1);
	creat_sp(nach2, m);
	pokaz_sp(nach2);
	slit(nach1, nach2, nach);
	sort(nach);
	pokaz_sp(nach);
	return 0;
}