Fusionar dos listas enlazadas
#include
#define OK 1
#define NULL 0
#define TURE 1
#define FLASE 0
typedef struct LNode
{
int data
struct LNode *next; p>}LNode, *LinkList;
typedef int Status;
LinkList CreateLinkList_1(void) // Generar tabla de conexiones
{
LinkList L, p, q;
int i, Len;
printf( "(Ingrese la longitud de LinkList: ");
scanf( " d ", amp; Len);
L=(LinkList)malloc(sizeof(LNode));
L-gt; next=NULL;
L-gt; datos =Len;
p=L;
for(i=0; i next=NULL;
printf( "Datos de entrada: ");
p>
scanf( "d ",amp; q-gt; datos
p-gt; siguiente=q; p-gt; siguiente;
}
return L;
}
Estado PrintLinkList(LinkList L) //Imprimir lista de enlaces
{
Lista de enlaces q;
q=L
if(q!=NULL)
{
printf( "La longitud del enlace es: 4d\n ", q-gt; data
q=q-gt;
printf( "L ");
hacer
{
printf( "--gt; d ", q-gt; datos
q= q-gt; siguiente;
}
while(q!=NULL
printf( "\n ");
}
return OK
}
LinkList LinkListSort(LinkList L) //LinkListSort(burbujeante)
{
int i, cambio
Lista de enlaces p, q, s
for(i=L-gt; datos-1, cambio= TURE; igt; =1amp;amp;cambiar;i--)
p> {
cambiar=FLASE
p=L; >
q=p-gt; siguiente;
mientras(q-gt; siguiente! =NULL)
{
if(p-gt; siguiente-gt; datagt; q-gt; siguiente-gt; datos)
{
p-gt; q-gt; siguiente;
s=q; q=p-gt; siguiente
if(q-gt; siguiente==NULL)
{
s-gt; siguiente= NULL
q-gt; siguiente=s
}
De lo contrario
{
s-gt; siguiente=q-gt;
q-gt;
}
cambiar=TURA;
}
P=P-GT;
Q=Q-GT;
}
}
}
}
Devolver L
}
LinkList LinkListMerge(LinkList La, LinkList Lb) // Fusionar listas de enlaces
{
LinkList pa, pb, pc, Lc
Lc=( LinkList)malloc(sizeof(LNode));
Lc-gt; datos = La-gt; datos
pa=La-gt; /p>
pb=Lb-gt; siguiente
Lc=pc=La
while(paamp;pb)
{
if(pa-gt; datos lt; = pb-gt; datos)
{
pc-gt; next=pa; pa=pa-gt; siguiente;
}
else
{ pc-gt; siguiente=pb; pc=pb; siguiente;}
}