Red de conocimiento informático - Conocimiento informático - Fusionar dos listas enlazadas

Fusionar dos listas enlazadas

#include

#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;}

}