#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct _char_count {
char c;
int count;
struct _char_count *next;
} char_count;
int main(int argc, char **argv){
int i, j;
char_count *headptr, *tmp, *prev;
tmp = NULL;
prev = NULL;
headptr = NULL;
for (i=1; i < argc; i++) {
for (j
=0; j
< strlen(argv
[i
]); j
++){ tmp = headptr;
while (1) {
if(tmp == NULL){
tmp
= (char_count
*) malloc(sizeof(char_count
)); tmp->c = argv[i][j];
tmp->count = 1;
tmp->next = NULL;
if (headptr == NULL) {
headptr = tmp;
} else {
prev->next = tmp;
}
break;
}
else if (tmp->c == argv[i][j]) {
tmp->count++;
break;
}
else {
prev = tmp;
tmp = tmp->next;
}
}
}
}
for (tmp = headptr; tmp !=NULL; tmp = tmp->next){
printf("%c - %d\n", tmp
->c
, tmp
->count
); }
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgoKdHlwZWRlZiBzdHJ1Y3QgX2NoYXJfY291bnQgewogICBjaGFyIGM7CiAgIGludCBjb3VudDsKICAgc3RydWN0IF9jaGFyX2NvdW50ICpuZXh0Owp9IGNoYXJfY291bnQ7CgoKaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KXsKICAgaW50IGksIGo7CiAgIGNoYXJfY291bnQgKmhlYWRwdHIsICp0bXAsICpwcmV2OwoKICAgdG1wID0gTlVMTDsKICAgcHJldiA9IE5VTEw7CiAgIGhlYWRwdHIgPSBOVUxMOwoKICAgZm9yIChpPTE7IGkgPCBhcmdjOyBpKyspIHsKICAgICAgZm9yIChqPTA7IGogPCBzdHJsZW4oYXJndltpXSk7IGorKyl7CiAgICAgICAgIHRtcCA9IGhlYWRwdHI7CiAgICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAgICAgIGlmKHRtcCA9PSBOVUxMKXsKICAgICAgICAgICAgICAgdG1wID0gKGNoYXJfY291bnQgKikgbWFsbG9jKHNpemVvZihjaGFyX2NvdW50KSk7CiAgICAgICAgICAgICAgIHRtcC0+YyA9IGFyZ3ZbaV1bal07CiAgICAgICAgICAgICAgIHRtcC0+Y291bnQgPSAxOwogICAgICAgICAgICAgICB0bXAtPm5leHQgPSBOVUxMOwogICAgICAgICAgICAgICBpZiAoaGVhZHB0ciA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgIGhlYWRwdHIgPSB0bXA7CiAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgIHByZXYtPm5leHQgPSB0bXA7CiAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiAodG1wLT5jID09IGFyZ3ZbaV1bal0pIHsKICAgICAgICAgICAgICAgdG1wLT5jb3VudCsrOwogICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgcHJldiA9IHRtcDsKICAgICAgICAgICAgICAgdG1wID0gdG1wLT5uZXh0OwogICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgfQogICB9CgogICBmb3IgKHRtcCA9IGhlYWRwdHI7IHRtcCAhPU5VTEw7IHRtcCA9IHRtcC0+bmV4dCl7CiAgICAgIHByaW50ZigiJWMgLSAlZFxuIiwgdG1wLT5jLCB0bXAtPmNvdW50KTsKICAgfQoKICAgcmV0dXJuIDA7Cn0K