Utilice el lenguaje C para fusionar dos listas lineales ordenadas en una lista lineal ordenada. ¡Urgente en línea! ! ! !
Probado y aprobado bajo VC.
#include lt; stdio.hgt;
int merge(int *a, int n1, int *b, int n2, int *s)
{
int i=0, j=0, k=0;
mientras(ilt; n1amp; amp; jlt; n2)
{ p> p>
if(a[i]gt;b[j]){
if(kamp;amp;s[k-1]==b[j])//allí son elementos duplicados
j
else
s[k ]=b[j ]; p> else{
if(kamp;amp;s[k-1]==a[i])//hay elementos duplicados
i;
else
s[k ]=a[i ];
}
}
while(ilt;n1){ p>
if(kamp;amp;s[k-1]==a[i])
i ;
else
s[ k ]=a[i ];
}
mientras(jlt;n2){
si(kamp;amp;s[k-1 ]= =b[j])//hay elementos duplicados
j;
else
s[k]=b[j]; p>
}
return k;
}
int main()
{
int a [100], b[100], s[200], n1, n2, i, n3;
printf("Ingrese el primer número de elementos de la matriz: "); p> scanf("d", amp; n1);
printf("Entrada d de elementos ascendentes (separados por espacio): ",
for(i= 0; ilt; n1; i )
scanf("d", amp; a[i]);
printf("Introduciendo el segundo número de elementos de la matriz: "); /p >
scanf("d", amp; n2);
printf("Ingrese d elementos ascendentes (separados por espacios): ",
for( i= 0;ilt;n2;i)
scanf("d",amp;b[i]);
n3=merge(a,n1,b,n2, s) ; //Fusiona los elementos de las matrices a y b en la matriz s (y elimina los duplicados) y devuelve el número de elementos en la matriz fusionada
printf("La matriz fusionada de elementos es :");
for(i=0;ilt;n3;i)
printf("d ",s[i]);
printf
("\n");
Devuelve 0
}
Se adjunta un conjunto de datos de prueba:
5 p >
3 50 50 100 100
3
8 50 80
La salida es la siguiente: 3 8 50 80 100