使用C++实现一种数据压缩算法
时间: 2024-05-24 14:10:39 浏览: 189
基于C++和算法实现的压缩与解压程序【100012988】
以下是使用C实现的一种基本的数据压缩算法:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LENGTH 1000
// 压缩字符串
void compress(char *str)
{
int count = 1; // 重复字符的数量
char *comp_str = (char*)malloc(MAX_LENGTH * sizeof(char)); // 用于存储压缩后的字符串
int index = 0; // 压缩后字符串的下标
for (int i = 0; i < strlen(str); i++) {
if (str[i] == str[i+1]) { // 如果当前字符和下一个字符相同
count++;
} else { // 如果不同
comp_str[index++] = str[i]; // 存储当前字符
comp_str[index++] = count + '0'; // 存储重复字符的数量
count = 1; // 重置数量
}
}
comp_str[index] = '\0'; // 添加字符串结尾符
// 输出压缩后的字符串
printf("Compressed string: %s\n", comp_str);
}
int main()
{
char str[MAX_LENGTH];
printf("Enter a string: ");
fgets(str, MAX_LENGTH, stdin);
str[strcspn(str, "\n")] = '\0'; // 去掉fgets函数自动添加的换行符
printf("Original string: %s\n", str);
compress(str);
return 0;
}
这个算法的基本思想是将连续出现的相同字符替换为该字符和它的重复数量。例如,字符串"aaabbbccc"将被压缩成"3a3b3c"。该算法的时间复杂度为O(n),其中n为字符串的长度。
阅读全文