#include <stdio.h> #include <string.h> #include <stdlib.h> #include <ctype.h> struct NODO { char CAR; int FREQ; struct NODO *sig; }; struct NODO *INICIO = NULL; main() { int k=0; int CONT[27]; char *cad = (char*)malloc(100); strcpy(cad, "Mecanismo del algoritmo"); while( cad[k] ) { cad[k] = toupper(cad[k]); printf("%c", cad[k]); k++; } printf("\n"); for(k=0; k<26; k++) CONT[k] = 0; k=0; // PASO 1 while( cad[k] ) { if (cad[k] == 32) CONT[26]++; else CONT[cad[k] - 'A']++; k++; } for(k=0; k<26; k++) printf("%c\t%i\n", (k+'A'), CONT[k]); printf("ESPACIOS\t%d\n", CONT[26]); // PASO 2 for(k=0; k<27; k++) { if ( CONT[k] > 0 ) { struct NODO *NEW = (struct NODO*)malloc(sizeof(struct NODO)); NEW->CAR = k+'A'; NEW->FREQ = CONT[k]; NEW->sig = NULL; if ( !INICIO ) INICIO = NEW; else { NEW->sig = INICIO; INICIO = NEW; } } } while ( INICIO ) { printf("%c\t%d\n", INICIO->CAR, INICIO->FREQ); INICIO = INICIO->sig; } }