求助 压缩的算法问题
编写两个函数, 分别实现如下简单压缩算法的压缩和解压。 如:0x11,0x11,0x11,0x22,0x22,0x33 解压后变为 0x11,0x03, 0x22, 0x02, 0x33,0x01.能帮忙编写一下这两个函数 我参考下吗?
这是我编写的函数 不能正确得出结果 能帮忙找下错吗?
char *reduce(char *str)
{
int len = 0;
char *new = (char *)malloc((int)strlen(str)+1);
char *result = new;
char *temp = str;
while (*str != '\0')
{
if (*str != *(++temp))
{
*new++ = *str++;
len++;
*new++ = len;
}
else
{
len++;
}
}
*new = '\0';
return result;
}
char *increase(char *str, int num)
{
if (str == NULL)
return NULL;
char *new = (char *)malloc(strlen(str)+num);
char *result = new;
int i=0;
int j;
while (*str != '\0')
{
if (0 == (i%2))
{
for (j=0; j<str[i+1]; j++)
{
*new++ = str[i];
}
}
i += 2;
}
*new = '\0';
return result;
}
[ 本帖最后由 sun004715 于 2010-11-28 17:00 编辑 ]