¿Cómo fusionar dos listas secuenciales que todavía están ordenadas?
//?El siguiente código de programa se utiliza para realizar operaciones de intersección y fusión en conjuntos; léalo atentamente.
#include?lt;iostreamgt;
#include?lt;iomanipgt;
#include?lt;time.hgt;
usando?namespace?std;
typedef?struct?link?{
short?num;
struct?link?*next;
}AGG;
AGG?*CreateList(int?n)?{? //Crea una lista vinculada con n nodos y devuelve el encabezado de la lista vinculada
AGG? *cabeza, *p, *q;
cabeza?=?p?=?nuevo?AGG;
cabeza-gt;num?=?0;
for(short?i?=?0;i?lt;?n;i )?{
q?=?new?AGG;
q-gt ;num ?=?(sin firmar)rand()??n? ?n/2;
p-gt; siguiente?=?q;
p?=?q;
p>
}
p-gt; siguiente?=?cabeza
retorno?cabeza
}
void ?RiseSort(AGG? *head)?{? //RiseSort
AGG?*p, *s, *pt;?
p? =?cabeza;
s?=?p-gt;siguiente;
while(p-gt;siguiente?! =?cabeza)?{
while(s-gt;siguiente ?! =?cabeza)?{
if(p-gt;siguiente-gt;num?gt;?s-gt;siguiente-gt;num)?{
pt ?=?p-gt;siguiente;
p-gt;siguiente?=?s-gt;siguiente;
s-gt;siguiente? =?p-gt;siguiente -gt; siguiente;
p-gt; siguiente-gt; siguiente
}
más? s?=?s-gt ;siguiente;
}
p?=?p-gt;siguiente;
s?=?p-gt; siguiente;
}
}
}
}