当前位置:首页 » 编程语言 » 字符串压缩法c语言
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

字符串压缩法c语言

发布时间: 2023-05-11 06:25:24

c语言链表实现字符串压缩, 求大神帮助啊,跪谢。...

/*

请输入表达式:11222335556444444222

21322335166432

请输入表达式:1BBBBB3AAA3BBB

115B133A133B

请输入表达式:


请输入表达式:^Z

Press any key to continue

*/

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

typedefstructstack{
charch;
intsize;
structstack*next;
}*STACK,NODE,*pNode;

STACKInitStack(){
STACKS=(pNode)malloc(sizeof(NODE));
S->ch=0;
S->size=0;
S->next=NULL;
returnS;
}

intEmpty(STACKS){
returnS->next==NULL;
}

intNotEmpty(STACKS){
returnS->next!=NULL;
}

boolGetTop(STACK饥悄S,char&c){
if(Empty(S))returnfalse;
c=S->next->ch;
returntrue;
}

voidPush(STACKS,chare){
charc;
pNodenewnode=(pNode)malloc(sizeof(NODE));
if(GetTop(S,c)&&c==e){
++S->next->size;
return;
}
newnode->ch=e;
newnode->size=1;
newnode->next=S->next;
S->next=newnode;
}

boolPop(STACKS,char&ch,int&size){
pNodep;
if(Empty(S))returnfalse;
p=S->next;
ch=p->ch;
size=p->size;
S->next=p->next;
free(p);
returntrue;
}

intmain(){
STACKS=InitStack();
charexpression[100],*p,c;
intlen,i,sz;
printf("请输入表达式烂漏渣:");
while(gets(expression)!=NULL){
len=strlen(expression);
p=expression+len-搜梁1;
for(i=len-1;i>=0;--i,--p)Push(S,*p);
while(Pop(S,c,sz))printf("%d%c",sz,c);
printf(" 请输入表达式:");
}
return0;
}

Ⅱ c语言 怎么转换BCD码和字符串 相互转换 压缩和非压缩都说说怎么弄

MOV R2, #05H;非压缩BCD码\r\n MOV R3, #06H\r\n MOV A, R2 ;将R2传给A\r\n SWAP A ;A的高低4位交换\r\n ORL A, R3 ;将R3与A或运算\r\n MOV R4, A ;运算后的值即压缩码\r\n\r\n关键是SWAP和ORL运算。

Ⅲ c语言a到z怎么表示

c语言a到z表示的方法是C语言字符串快速压缩算法代码通过键盘输入一串小写字母a到z组成的字符串。根据查询公开相关信息得知,C语言是一门面向过程、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。

Ⅳ 下面的c语言字符串压缩程序怎么写呀 输入样例 a5b3aba13b4 输出: aaaaabbbabaaaaaaaaaaaaabbbb

#include <stdio.h>
#include <stdlib.h>//为了使用atoi函数派圆
#include <string.h>//为了使用strlen函尘薯塌数
int main(void)
{
char input[100], temp;
char *p = input;
int i, j, len, tempint;
printf("请输入:");
scanf("%s", input);
len = strlen(input);
for (i=0; i<len; i++)
{
if (*p>='a' && *p<='z')
{
printf("%c", *p);
temp = *p;
p++;
}
else if (*p>=Ɔ' && *p<=Ə')
{
tempint = atoi(p);
for (j=1; j<tempint; j++)
printf("%c", temp);
while (*p>=Ɔ' &手旅& *p<=Ə')
p++;
}
}
return 0;
}

Ⅳ 使用C语言实现字符串的压缩。

/*
原串:111225555
压缩后:312245
原串:333AAAbbbb
压缩后:333A4b
原串:ASXDCdddddd
压缩后:1A1S1X1D1C6d
Pressanykeytocontinue
*/
#include<stdio.h>
#include<string.h>

char*CompressStr(chars[]){
chart[255];
inti=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]='';
strcpy(s,t);
returns;
}

intmain(void){
chari,s[][20]={"111225555","333AAAbbbb","ASXDCdddddd"};
for(i=0;i<3;++i){
printf("原串:%s ",s[i]);
printf("压缩后:%s ",CompressStr(s[i]));
}
return0;
}

Ⅵ 用C语言指针实现字符串压缩

#include<stdio.h>
#define MAX_NUM 32int main()
{ char *p,str[60];
int i,j=0;
static int num[26];
p=(char*)malloc(MAX_NUM*sizeof(char));
gets(str);
for(i=0;str[i];i++)
{ if(str[i]==' ') p[j++]=str[i];
else {
if(num[str[i]-97]==0||num[str[i]-97]==2||num[str[i]-97]==5)
{ p[j++]=str[i]; num[str[i]-97]++;}
else num[str[i]-97]++;
} }
for(i=0;i<j;i++)
putchar(p[i]);
getch();
return 0;
}注:输入的为小写字母,咐宏旁而且绝歼句子长衡橡度不超过60个字符,保存字数不超过32个。。。。。在win_tc中通过……

Ⅶ c语言字符串如何压缩

话说B数组不应该是整形呀,不然不能保存字母了。以下是我的代码。。。

#include<iostream>

#include<string.h>

#include<stdio.h>

usingnamespacestd;


voidyasuo(chara[],charb[])

{

intcount=1,p=0;

for(inti=0;i<strlen(a);i++)

if(a[i]==a[i+1])

count++;

elseif(count>2)

{

b[p++]=(char)(count+'0');

b[p++]=a[i];

count=1;

}

elseif(count==2)

{

b[p++]=a[i];

困游帆b[p++]=a[i];

count=1;

}

磨氏else

b[p++]=a[i];

}

voidprintB(charb[])

{

cout<<汪雹b<<endl;

}

voidbackB(charb[])

{

for(inti=0;i<strlen(b);i++)

if(b[i]<='9'&&b[i]>='3')

{

for(intj=0;j<(int)(b[i]-'0');j++)

cout<<b[i+1];

i++;

}

else

cout<<b[i];

cout<<endl;

}

intmain()

{

chara[1000]={0},b[1000]={0};

gets(a);

yasuo(a,b);

printB(b);

backB(b);

}

Ⅷ c语言 压缩字符串:如AABBCCDDDD,输出2A2B2C4D,用C语言,求问

#include<stdio.h>
#include<string.h>
void
main()
{
char
s[51];
int
i=0,j=1;
printf("请输入一个长度不超过五十的字符串(否则会越界出错):\n");
scanf("%s",s);
if(strlen(s)>50){
printf("输入不合要求!");
return;
}
while(i<strlen(s))
{
//j用于统计重复的字母弊空个数中卜帆
if(s[i]==s[i+1])
j++;
else{
printf("%d%c",j,s[i]);
j=1;//j重新计数
}
i++;
}
printf("\n");
}
不好意思昨卖雹晚写的,没仔细看,有错误。