LZW algorithme de décompression

Je suis en train d'écrire un programme pour une mission qui a pour mettre en œuvre la compression LZW/décompression.
Je suis en utilisant les algorithmes suivants pour cela:

-compression

w = NIL;
   while ( read a character k )
       {
         if wk exists in the dictionary
         w = wk;
         else
         add wk to the dictionary;
         output the code for w;
         w = k;
       }

-décompression

read a character k;
   output k;
   w = k;
   while ( read a character k )    
  /* k could be a character or a code. */
        {
         entry = dictionary entry for k;
         output entry;
         add w + entry[0] to dictionary;
         w = entry;
        }

Pour l'étape de compression, je suis juste outputing ints représentant l'index de la
entrée de dictionnaire, à partir du dictionnaire se compose de caractères ascii (0 - 255).
Mais quand je viens à l'étape de décompression, j'obtiens cette erreur
par exemple, si je compresser un fichier texte composé de seulement "booop"
il faudra passer par ces étapes pour produire un fichier de sortie:

w       k       Dictionary          Output

-       b       -                   -
b       o       bo (256)            98 (b)
o       o       oo (257)            111 (o)
o       o       -                   -
oo      p       oop (258)           257 (oo)
p       -       -                   112 (p)

output.txt:
98
111
257
112

Puis quand je viens pour décompresser le fichier

w       k          entry        output       Dictionary
        98 (b)                  b   
b       111 (o)    o            o             bo (256)
o       257 (error)

257 (oo) n'a pas encore été ajouté. Quelqu'un peut-il voir où je vais mal ici parce que je suis
perplexe. L'algorithme de mal?

Pouvez-vous nous montrer le code réel, parce que pseudocode est toujours ambigu.
Le problème est-il résolu?
Oui j'ai mis en œuvre les modifications apportées à l'algorithme et il fonctionne.

OriginalL'auteur clintbeastwood | 2012-05-04