
使用C语言实现字符串的压缩。
要求必须使用指针和链表,样例:输入111225555,输出312245;输入333AAAbbbb,输出333A4b;拜托了,各位大神!!急求啊!!!...
要求必须使用指针和链表,样例:输入111225555,输出312245;输入333AAAbbbb,输出333A4b;
拜托了,各位大神!!急求啊!!! 展开
拜托了,各位大神!!急求啊!!! 展开
3个回答
展开全部
/*
原串: 111225555
压缩后: 312245
原串: 333AAAbbbb
压缩后: 333A4b
原串: ASXDCdddddd
压缩后: 1A1S1X1D1C6d
Press any key to continue
*/
#include <stdio.h>
#include <string.h>
char *CompressStr(char s[]) {
char t[255];
int i = 0,j,k = 0;
while(s[i]) {
j = i + 1;
while(s[i] == s[j]) ++j;
t[k++] = j - i + '0';
t[k++] = s[i];
i = j;
}
t[k] = '\0';
strcpy(s,t);
return s;
}
int main(void) {
char i,s[][20] = {"111225555","333AAAbbbb","ASXDCdddddd"};
for(i = 0; i < 3; ++i) {
printf("原串: %s\n",s[i]);
printf("压缩后: %s\n",CompressStr(s[i]));
}
return 0;
}
展开全部
111225555 : 3个1,2个2,4个5;
333AAAbbbb:3个3,3个A,4个b;
找到规律了,定义一个数组,使用指针指向第一个地址,挨个查找,统计出来就行了。
333AAAbbbb:3个3,3个A,4个b;
找到规律了,定义一个数组,使用指针指向第一个地址,挨个查找,统计出来就行了。
追问
不好意思,我不会啊,可不可以帮我写出来程序,感激涕零!!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2018-08-03 · 百度知道合伙人官方认证企业
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
关注

展开全部
如果数据结构是数组的话,主要是要解决两个问题,一是统计重复的字符,二是确定数组压缩后每个元素在数组中所处的位置。
可以用一个指针遍历数组,另一个指针标记存储位置。
字符串或串(String)是由数字、字母、下划线组成的一串字符。一般记为 s="a1a2···an"(n>=0)。它是编程语言中表示文本的数据类型。
通常以串的整体作为操作对象,如:在串中查找某个子串、求取一个子串、在串的某个位置上插入一个子串以及删除一个子串等。两个字符串相等的充要条件是:长度相等,并且各个对应位置上的字符都相等。设p、q是两个串,求q在p中首次出现的位置的运算叫做模式匹配。串的两种最基本的存储方式是顺序存储方式和链接存储方式。
可以用一个指针遍历数组,另一个指针标记存储位置。
字符串或串(String)是由数字、字母、下划线组成的一串字符。一般记为 s="a1a2···an"(n>=0)。它是编程语言中表示文本的数据类型。
通常以串的整体作为操作对象,如:在串中查找某个子串、求取一个子串、在串的某个位置上插入一个子串以及删除一个子串等。两个字符串相等的充要条件是:长度相等,并且各个对应位置上的字符都相等。设p、q是两个串,求q在p中首次出现的位置的运算叫做模式匹配。串的两种最基本的存储方式是顺序存储方式和链接存储方式。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询