Mam problem z zadaniem, w którym mam połączyć dwie listy jednokierunkowe w jedną listę uporządkowaną. Uporządkowanie pojedynczych list już poszło, tylko to sklejenie w ogóle jakoś mi nie wychodzi...
Struktura i funkcje, które udało mi się do tej pory stworzyć to:
Kod: Zaznacz cały
struct element
{
int info;
element *nast;
};
struct element2
{
int info2;
element *nast2;
};
void TworzListeOdwr (element *&pocz)
{
int wartosc;
char odp;
cout<<"Podaj pierwszy element listy nr 1"<<endl;
do
{
cin>>wartosc;
DolaczPocz(pocz, wartosc);
cout<<"Czy nastepny element?(T/N)"<<endl;
cin>>odp;
}
while(toupper(odp)!='N');
}
void TworzListeOdwr2 (element *&pocz)
{
int wartosc;
char odp;
cout<<"Podaj pierwszy element listy nr 2"<<endl;
do
{
cin>>wartosc;
DolaczPocz(pocz, wartosc);
cout<<"Czy nastepny element?(T/N)"<<endl;
cin>>odp;
}
while(toupper(odp)!='N');
}
void PiszListe(element *pocz)
{
if(pocz!=NULL)
do {
cout <<setw(6)<<(pocz->info)<<endl;
pocz = pocz -> nast;
}
while (pocz!=NULL);
else cout<<"Lista pusta"<<endl;
}
void DolaczPocz(element *&pocz, int wartosc)
{
element *nowy = new element;
nowy -> info = wartosc;
nowy -> nast= pocz;
pocz = nowy;
}
void sort(element *&pocz)
{
short int ilosc = 0;
for (element * p = pocz; p; p = p->nast) ++ilosc;
long int temp;
short int i, j;
if (ilosc) ilosc--;
for(i = 0; i < ilosc; i++)
for (element * p = pocz; p->nast; p = p->nast)
if(p->info < p->nast->info)
{
temp = p->info;
p->info = p->nast->info;
p->nast->info = temp;
}
}
(Bardzo) początkująca programistka