資源簡介
lzw代碼實現,使用了簡單的字符"aabbbaabb",生成的編碼為“20016463”
代碼片段和文件信息
#include?
#include?
using?namespace?std;
//const?char?SigSource[]?=?“aabcabbbbd“;
typedef?struct?charIndex
{
?????string?str;
?????int?index;
}*CharIndex;
int?main(int?argc?char*?argv[])
{
?????int?i?j?k;
?????int?count?=?0;
?????int?charNum?=?0;
?????int?indexNum?=?0;
?????string?S1;
?????string?S2;
?????string?S12;
?????char?binCode[20];
?????const?string?sigSource?=?“aabbbaabb“;
?????
?????for?(i?=?0;?i??????{
??for?(j?=?0;?j? ??{
???????if?(sigSource[j]?==?sigSource[i])
????break;
??}
??if?(j?==?i)
???????count++;
?????}
?????
?????charNum?=?count;
?????CharIndex?data?=?new?charIndex[10];
?????count?=?0;
?????for?(i?=?0;?i??????{
??for?(j?=?0;?j? ??{
???????if?(sigSource[j]?==?sigSource[i])
????break;
??}
??if?(j?==?i)
??{
???????data[count].str?=?sigSource.substr(i?1);
???????data[count].index?=?count;
???????count++;
??}
?????}
?????indexNum?=?charNum;
?????data[indexNum].str?=?“LZW_CLEAR“;
?????data[indexNum].index?=?indexNum;
?????indexNum++;
?????data[indexNum].str?=?“LZW_EOI“;
?????data[indexNum].index?=?indexNum;
?????indexNum++;
?????
?????for?(i?=?0;?i??????{
??cout?<“data[“?< ???????<“??index?is?:“?<?????}
?????for?(i?=?0;?i??????{
??if?(data[i].str?==?“LZW_CLEAR“)
??{
???????binCode[0]?=?data[i].index?+?‘0‘;
???????//S2.clear();
???????//S12.clear();
???????//S1.clear();
???????count?=?1;
??
- 上一篇:c++連通區域標記 算法
- 下一篇:c++代碼解析IP數據包
評論
共有 條評論