1. LZW?
2. 编码、解码过程?
编码过程:
1. 初始状态,用 ASCII 码初始化字典。S、C为空;
2. 读入新的字符 C,与 S 合并形成字符串 S+C。
3. 在字典里查找 S+C,如果:
-- S+C 在字典里,S =S+C。
-- S+C 不在字典里,将 S 在字典中的索引输出;
在字典中为 S+C 建立一个新的索引;
更新 S=C。
4. 返回步骤 2 重复,直至读完原字符串中所有字符。
解码过程:
1. 初始状态,用 ASCII 码初始化字典。S、C为空;
2. 读入第一个符号 current,解码输出;
3. 赋值 previous = current;
4. 读入下一个符号 current;
5. 在字典中查找 current,如果
5.1. current 在字典中:
a. 令 s = dict[current];
b. 输出 s;
c. 新增字典条目 dict[previous] + s[0];
5.2 current 不在字典中:
a. 令 s = dict[previous] + dict[previous][0];
b. 输出 s;
b. 新增字典条目 s;
6. 返回步骤3重复,直至读完所有记号;
3. 程序代码?