Saludos.
Necesito hacer un GZIP para la universidad, espero que podais ayudarme.
Uno de los modulos que necesito inplementar es el algoritmo de Lempel-Ziv, que consiste en crear una clase.
Las funciones de la clase deben leer una cadena de caracteres (con espacios), buscar por la cadena una subcadena y sustituirla por una referencia a la primera aparicion.
Es un poco lioso asi que os pongo un ejemplo:
Hay una vaca. La vaca es blanca.
deberia quedar asi:
Hay una vaca. L[REF] es blanca.
REF1 hace referencia a la primera vez que aparece la subcadena [a vaca].
por lo tanto quedaria asi:
Hay una vaca. L[REF(6,9)] es blanca.
donde 6 indica el tamaòo de la cadena de referencia y que esta a una distancia de 9 caracteres de la primera aparicion.
despues de analizar toda la cadena y hacer las sustituciones se pasa cada caracter a ASCII y la referencia de esta forma:
... codASCII codASCII codASCII codlongitud[6] codigolongitud[6] codigodistancia[9] codigodistancia[9] codASCII codASCII ...
(el texto entre espacios se supone el contenido de la posicion i-esima del vector de caracteres).
Mi duda es:
-Una vez encontrada una subcadena repetida como la sustituyo por las 4 posiciones de codigos de longitud y distancia.
-Si implemento el tipo de dato como:
private:
char literal;
int longitud;
int distancia;
como se que distancia tiene la cadena para no pasarme buscando.
Gracias por adelantado.