Estructura de datos

Necesito realizar estos ejercicios y la verdad no se como resolverlos, ¿me podrías dar una mano? Muchas gracias.
Los ejercicios tienen la siguiente bibliografía:
Cátedra: Estructuras de Datos
Libro:¿? Estructura de datos. ¿Referencia práctica con orientación a objetos?.
Román Martínez, Elda Quiroga
Inst. Tecnológico y de Estudios Superiores de Monterrey. Campus Monterrey.
Ed. Thomsan Learning. - 2002 - ISBN 970-686-044-4
¿Bibliografía de la clase 6? ¿Listas? Unidad 2: Estructuras de Datos Lineales
1)
A continuación se describe un método para la clase lista. Impleméntelo en C++.
Mezcla
UTILIDAD: une en forma alterna, los elementos de dos listas,
ENTRADA: dos listas encadenadas, L1 y L2.
SALIDA: la lista L1 contiene los elementos de las dos listas, acomodados de manera alterna.
PRECONDICION: las listas existen y no están vacías.
POSTCONDICION: la lista L2 queda vacía y la L1 queda con los elementos en forma alterna
2)
Escriba la implementación de un método llamado INVIERTE, que invertirá el orden original de los elementos en la lista, de tal forma que el último elemento será ahora el primero, el penúltimo será el segundo, y así hasta que el primero sea el último. Considere que la lista no está vacía y que no se construirá una nueva, sólo se invertirá el orden de los elementos de la lista original.
3)
A continuación se describe un método para la clase Lista. Impleméntelo en C++.
SPLIT
UTILIDAD: divide los elementos de una lista, de tal forma, que se conviene en dos
nuevas listas. Los elementos de la primera lista serán los que se encontraban en las posiciones 1. 3, 5 ... De la lista original y la segunda tendrá los demás elementos.
No crea dos nuevas listas, sólo divide la original.
ENTRADA: una lista encadenada (L).
SALIDA: dos listas (IMPARES y PARES).
PRECONDICIÓN: la lista existe.
POSTCONDICIÓN: la lista queda sin elementos. Las listas PARES e IMPARES contienen a los elementos de la lista original, de acuerdo con su posición.
Respuesta
1
Por ahora solo te digo el 1ro, es muy tarde aquí en Cuba, luego te digo los demás.
Intercalar
void Intercalar(TList *L1, TList *L2)
{
if(L1->Count != 0 && L2->Count != 0) // Si no estan vacias
{
int i, j;
if(L1->Count > L2->Count)
{
for(i = 0, j = 1; i < L2->Count; i++)
{
L1->Insert(j, L2->Items);
j += 2;
}
}
else
{
if(L1->Count <= L2->Count)
{
int cantInicial = L1->Count;
for(i = 0, j = 1; i < cantInicial - 1; i++)
{
if(j <= cantInicial)
{
L1->Insert(j, L2->Items);
j += 2;
}
else
L1->Add(L2->Items);
}
while(i < L2->Count)
{
L1->Add(L2->Items);
i++;
}
}
}
L2->Clear(); // rutina para limpiar la lista 2.
}
else
throw Exception("Hay listas vacias");
}
Si, muchas gracias, espero lo demás.
Muchas gracias, me sirvió de mucho tu programa saludos.
Para el 1:
void Invierte(TList *L1)
{
int count = L1->Count;
while(count > 0)
{
L1->Add(L1->Items[count - 1]);
L1->Delete(count - 1);
count--;
}
}

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas