标题:求助 压缩的算法问题
取消只看楼主
sun004715
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2010-10-30
结帖率:100%
已结贴  问题点数:10 回复次数:2 
求助 压缩的算法问题
编写两个函数, 分别实现如下简单压缩算法的压缩和解压。 如: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 编辑 ]
搜索更多相关主题的帖子: 算法 压缩 
2010-11-27 23:07
sun004715
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2010-10-30
得分:0 
回复 6楼 BlueGuy
很不幸 我面试遇到这道题了  没做对  谢谢
2010-11-29 14:50
sun004715
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2010-10-30
得分:0 
回复 5楼 BlueGuy
我在最后加了
 for(i=0; i<sizeof(packed); i++)
        printf("%x   ", packed[i]);
为什么打印出来  11   3   22   2   33   1   ffffffff   40   11   11   11   22   22   33   
1 后面是怎么打印出来的呢  packed[7] 总共才14个 字节  上面打印出来的也是14个字节吗? ffffffff这个不是 4个字节吗 ?  11 占两个字节吧?   能帮忙解答下吗
2010-11-29 19:07



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-327122-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.770852 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved