Professional Documents
Culture Documents
Frecv Cuvinte
Frecv Cuvinte
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct n
{
char key[20];//cuvantul
int f;//frecventa
struct n *next,*prev;
} nod;
nod *first,*last;
void creat_empty_list()
{
first=NULL;
last=NULL;
}
void add_Node()
{
char cheie[20];
nod *p,*q;
int inserat=0;
printf("\nCuvant: ");
fflush(stdin);
scanf("%s",cheie);
///lista vida
if(!first)//daca lista e vida, acesta e primul nod introdus
{
first=(nod*)malloc(sizeof(nod));
strcpy(first->key,cheie);
first->f=1;
first->next = first->prev = first;
last=first;
}
///lista nevida
else//daca mai exista noduri in lista, cautam cuvantul
{
p=first;
while(p->next!=first) ///!!!!
{
///cuv exista, crestem frecv
if(!strcmp(p->key,cheie))
{
p->f++;
inserat=1;
break;
}
else
if(p!=first)
{
p->prev->next = q;
q->prev = p->prev;
p->prev = q;
q->next = p;
}
else
///inserare inaintea primului nod
{
//p==first
p->prev = q;
q->next = p;
q->prev = last;
first = q;
}
inserat=1;
break;
}
}//end while
last->next = q;
q->prev = last;
q->next = first;
last = q;
}
}
}
printf("\n Afisare\n");
printf(" Cuvant Frecventa \n");
last = first->prev;
first = last->next;
//A-Z
if(ordine==1)
{
temp = first;
while(temp->next!=first)
{
printf("%10s%20d\n",temp->key,temp->f);
temp=temp->next;
}
printf("%10s%20d\n",temp->key,temp->f);
}
else if(ordine==2)
{
//Z-A
temp = last;
while(temp->prev!=last)
{
printf("%10s%20d\n",temp->key,temp->f);
temp=temp->prev;
}
printf("%10s%20d\n",temp->key,temp->f);
}
int main()
{
int i, n, ordine;
creat_empty_list();
print_List(ordine);
return 0;
}