页-1
开始/结束
开始
开始
动态连接线
流程
初始化编码表
初始化编码表
动态连接线.5
流程.4
读入第一个字符c1 令prevcode = c1
读入第一个字符c1令prevcode = c1
动态连接线.7
流程.6
读入下一个字符ch
读入下一个字符ch
动态连接线.9
判定
文件结束符
文件结束符?
流程.10
写入最后一个prevcode和257 压缩数据末尾
写入最后一个prevcode和257(压缩数据末尾)
动态连接线.12
是
是
动态连接线.16
数据
写入文件
写入文件
动态连接线.18
开始/结束.17
结束
结束
流程.20
在编码表中查询prev=prevcode c=ch的项
在编码表中查询prev=prevcode c=ch的项
动态连接线.21
否
否
判定.22
找到
找到?
动态连接线.23
动态连接线.28
动态连接线.31
否
否
流程.30
将当前prevcode 写入压缩缓存
将当前prevcode写入压缩缓存
动态连接线.34
判定.33
编码表已满
编码表已满?
动态连接线.36
是
是
流程.35
清空并初始化 编码表
清空并初始化编码表
动态连接线.38
否
否
流程.37
向编码表下一个 空项写入prev=prevcode c=ch
向编码表下一个空项写入prev=prevcode c=ch
动态连接线.39
动态连接线.41
流程.40
令prevcode=ch
令prevcode=ch
动态连接线.46
工作表.47
编码表定义为一个结构体数组结构体内含有prev和c两个变量 prevcode从9位开始最大可以增大为16位 定义256为清...
编码表定义为一个结构体数组,结构体内含有prev和c两个变量prevcode从9位开始,最大可以增大为16位定义256为清除标记,257为结束标记这种算法可以根据压缩后数据直接解压
工作表.48
LZW算法压缩部分流程图
LZW算法压缩部分流程图
动态连接线.51
是
是
流程.50
令prevcode的值为查询到的项的在编码表中的位置
令prevcode的值为查询到的项的在编码表中的位置
动态连接线.53
流程.52
写入清除标记 至压缩缓存
写入清除标记至压缩缓存