當前位置:首頁 » 編程語言 » 字元串壓縮法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");
}
不好意思昨賣雹晚寫的,沒仔細看,有錯誤。