Objective
input abacacdekb , output 3a 2b 2c 1d 1e 1k
Procesure
#include<stdio.h>
#include<stdlib.h>
char a[]={'a','b','a','c','a','c','d','e','k','b'};
typedef char key_type;
typedef struct node{
key_type key;
struct node *next;
int count;
}node, *pnode;
void insert(pnode *root, key_type key)
{
pnode p = (pnode)malloc(sizeof(node));
p->key = key;
p->next = NULL;
p->count = 1;
if( (*root) == NULL)
{
( *root ) = p;
return ;
}
insert(&(*root)->next,key);
}
int find(pnode root, key_type key)
{
if( root ==NULL )
return 0;
while( root && key != root->key)
{
root =root->next;
}
if( root == NULL)
return 0;
if( key == root->key)
{
(root->count) = (root->count)+1;
return 1 ;
}
}
void read(pnode *root )
{
pnode temp =(*root);
while(temp)
{
printf("%d%c ",temp->count,temp->key);
temp = temp->next;
}
}
void main()
{
int i;
pnode root = NULL ;
for(i=0;i<10;i++)
{
if( find( root , a[i] ) == 0 )
insert(&root,a[i]);
else
continue;
}
read(&root);
}