#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int
search(
char
input_char,
char
* list)
{
int
i;
for
(i = 0; i <
strlen
(list); i++) {
if
(list[i] == input_char) {
return
i;
break
;
}
}
}
void
moveToFront(
int
curr_index,
char
* list)
{
char
* record = (
char
*)
malloc
(
sizeof
(
char
) * 26);
strcpy
(record, list);
strncpy
(list + 1, record, curr_index);
list[0] = record[curr_index];
}
void
mtfEncode(
char
* input_text,
int
len_text,
char
* list)
{
int
i;
int
* output_arr = (
int
*)
malloc
(len_text *
sizeof
(
int
));
for
(i = 0; i < len_text; i++) {
output_arr[i] = search(input_text[i], list);
printf
(
"%d "
, output_arr[i]);
moveToFront(output_arr[i], list);
}
}
int
main()
{
char
* input_text =
"panama"
;
int
len_text =
strlen
(input_text);
char
* list = (
char
*)
malloc
(
sizeof
(
char
) * 26);
strcpy
(list,
"abcdefghijklmnopqrstuvwxyz"
);
printf
(
"Input text: %s"
, input_text);
printf
(
"\nMove to Front Transform: "
);
mtfEncode(input_text, len_text, list);
return
0;
}