#include #include struct freq {int ch;int count;struct freq * next;}; struct freq * fp; incFreq(int ch) { struct freq * f; if(fp==NULL) { fp = (struct freq *)malloc(sizeof(struct freq)); fp ->ch = ch; fp->count = 1; fp->next = NULL; return; } f = fp; while(1) if(f->ch==ch) { f->count = f->count+1; return; } else if(f->next==NULL) { f->next = (struct freq *)malloc(sizeof(struct freq)); f->next->ch = ch; f->next->count = 1; return; } else f = f->next; } showFreq() { struct freq * f; f = fp; while(f!=NULL) { printf("%c:%d, ",f->ch,f->count); f = f->next; } printf("\n"); } main(int argc,char ** argv) { int ch; FILE * fin; if((fin=fopen(argv[1],"r"))==NULL) { printf("can't open %s\n",argv[1]); exit(0); } fp = NULL; ch = getc(fin); while(ch!=EOF) { incFreq(ch); ch = getc(fin); } fclose(fin); showFreq(); }