⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 my_lzw_coding.cpp

📁 LZW算法的编码器
💻 CPP
字号:
/*LZW编码*/
#include <iostream.h>
#include <stdio.h>
#include <string.h>
void main()
{
	char str_in[96],table[192][14],temp[14];
	int in_length,table_length=1,flag,flag1,table_width=1,code;
	for(int i=0;i<96;i++)
	{
		str_in[i]=NULL;
	}
	for(i=0;i<192;i++)
	{
		for(int j=0;j<14;j++)
		{
			table[i][j]=NULL;
		}
	}
	cout<<"请输入字符串"<<endl;
	cin>>str_in;
	in_length=strlen(str_in);
	cout<<"字符长度为:"<<in_length<<endl;
	//把单个字符置入编码的字串表。


	table[0][0]=str_in[0];
	for (i=1;i<in_length;i++)
	{
		for(int j=0;j<table_length;j++)
		{
			if(table[j][0]==str_in[i])
			{
				flag=0;
				break;
			}
			else
			{
				flag=1;
			}
		}
		if(flag==1)
		{
			table[table_length][0]=str_in[i];
			table_length++;
		}
	}
//完成编码字串表。(处理多个字符的字串表部分)
	cout<<"编码"<<endl;
	for(i=0;i<14;i++)
	{
		temp[i]=NULL;
	}
	for (i=0;i<=in_length;i++)
	{
		if (table_width==1)
		{
			if (i==0)
			{
				temp[table_width-1]=str_in[i];
			}
			else
			{
				temp[table_width-1]=str_in[i-1];
				i--;
			}
		}
		if(table_width>1)
		{
			temp[table_width-1]=str_in[i];
		}
		for (int k=0;k<table_length;k++)
		{
			for(int j=0;j<table_width;j++)
			{
				if(table[k][j]==temp[j])
				{
					flag1=1;
				}
				else
				{
					flag1=0;
					break;
				}
			}
			if (flag1==1)
			{
				code=k+1;
				break;
			}
		}
		table_width++;
		if(i==in_length)
		{
			cout<<code<<endl;
		}
		if(flag1==0)
		{
			cout<<code<<" ";
			for(int j=0;j<table_width;j++)
			{
				table[table_length][j]=temp[j];
			}
			for(j=0;j<14;j++)
			{
				temp[j]=NULL;
			}
			table_length++;
			table_width=1;
		}
	}
	cout<<"编码字串表:"<<endl;
	for (int m=0;m<table_length;m++)
	{
		cout<<m+1<<" "<<"-"<<" ";
		for(int n=0;n<14;n++)
		{ 
			cout<<table[m][n];
		}
		cout<<endl;
	}
	cout<<"表长:"<<table_length<<endl;
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -