사전 코딩 알고리즘의 예

C 프로그래밍 언어

//인코딩

# include & ltstdio.h & gt

# include & ltstring.h & gt

//문자열 복사

Void copy 1(char * 접두어, char *s, int I, int j)

{

Int k;;

For(k = 0;; K & lt20; K++)

접두어 [k] =' \ 0';

For(k = I;; K<I+j; K++)

접두어 [k-I] = s [k];

}

Void main ()

{

Char s[30], prefix[30], dic[20][30]={, a, b, C };;

Int I, j, k, m, n;

I = 0;; J =1; K = 4;; M = 0;;

Printf (문자열을 입력하십시오. \ n);

획득;

While (나 & ltstrlen(s))

{

Copy 1 (접두어 s, I, j);

For (n =1; N & ltk;; N++)

{

If(strcmp (접두어, dic[n])==0)

{

J = j+1;

M = n;;

If ((I+j) < =strlen(s))

Copy 1 (접두어 s, I, j);

기타

{

Strcpy (접두어,);

}

}

}

Printf(%d, m) :

If(strlen (접두사)! =0)

{

Strcpy(dic[k], 접두어);

Printf(%s \n, DIC [k]);

}

K = k+1;

I = I+j-1;

J =1;

}

}

//디코딩

# include & ltstdio.h & gt

# include & ltstring.h & gt

# n 20//최대 문자열 길이 정의

# m 20//사전의 최대 코드 스트림 수 정의

# L 20 정의

구조적 자류

{

Char w [n];

} word [l];

Void main ()

{

Int 코드 [m]; //코드 워드 스트림 저장

//int code[]={ 1, 2,3,4,7,3};

Int I, k, t;

Int j;; //사전에 문자열을 추가합니다

Int cW// 현재 코드 단어

Int pW// 이전 코드 단어

부호 없는 문자 c; //현재 문자

Char p [20]; //접사 기호 문자열

Word[ 1]. W [0] =' a'; //입력 사전 초기화

단어 [2]. W [0] =' b';

단어 [3]. W [0] =' c';

J = 4;;

//디코딩할 코드 스트림을 출력합니다.

Printf(\n 코드 스트림 번호 입력:);

Scanf(%d, & AMPK);

Printf(\n 코드 스트림 번호 입력:);

For(I = 0;; 나 & ltk;; I++)

Scanf(%d, (코드+I));

CW = 코드 [0];

Printf(\n 출력 스트림: %s, word[cW]. W);

PW = cW

For (I =1; 나 & ltk;; I++)

{

CW = 코드 [I];

If(cW & lt;; J)

{

Printf(\n 출력 스트림: %s, word[cW]. W); //문자 스트림으로 내보내기

C=word[cW] 입니다. W [0];

Strcpy(p, (const char *)word[pW]. W);

T = strlen ((constchar *) p);

P [t] = c;

P [t+1] =' \ 0';

Strcpy(word[j].w, (constchar *) p);

J = j+1;

PW = cW

}

기타

{

Strcpy(p, (const char *)word[pW]. W);

C=word[pW] 입니다. W [0];

T = strlen ((constchar *) p);

P [t] = c;

P [t+1] =' \ 0';

Strcpy(word[j].w, (constchar *) p);

Printf(\n 출력 스트림: %s, p);

J = j+1;

PW = cW

}

}

For (I =1; 나 & ltj;; I++)

Printf(\n 사전은 %s, word[i] 입니다. W);

Printf(\n 끝났어 \ n);

}