Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #define MAX 51
- typedef struct node *link;
- typedef struct {
- char codice[6];
- char nome[MAX];
- char cognome[MAX];
- char data[11];
- char via[MAX];
- char citta[MAX];
- int cap;
- link head;
- } anagraf_t;
- typedef struct node{
- anagraf_t val;
- link next;
- };
- link InsOrdinato(link h, anagraf_t val);
- char KEYget(anagraf_t val);
- int KEYgreater(char val, char data);
- int main()
- {
- anagraf_t *persona;
- FILE*fp=fopen("elenco.txt", "r");
- link x, p, head;
- int i=0;
- x=malloc(sizeof(struct node));
- persona=(anagraf_t*)malloc(sizeof(anagraf_t));
- if(head==NULL) printf("Lista vuota\n");
- p=NULL;
- while(fscanf(fp, "%s%s%s%s%s%s%d", persona->codice,persona[i].nome,
- persona[i].cognome, persona[i].data, persona[i].via, persona[i].citta, &persona[i].cap)!=EOF){
- persona[i].head=InsOrdinato(head, *persona);
- }
- Stampa(x);
- return 0;
- }
- link newNode(anagraf_t val, link next)
- {
- link x=malloc(sizeof*x);
- if(x==NULL) return NULL;
- x->val=val;
- x->next=next;
- return x;
- }
- link InsOrdinato(link h, anagraf_t val)
- {
- link x, p;
- char k[MAX];
- *k=KEYget(val);
- if(h==NULL||KEYgreater(KEYget(h->val),k))
- return newNode(val, h);
- for(x=h->next, p=h; x!=NULL&&KEYgreater(k, KEYget(x->val)); p=x, x=x->next);
- p->next=newNode(val, x);
- return h;
- }
- char KEYget(anagraf_t val)
- {
- return val.nome;
- }
- int KEYgreater(char val, char data)
- {
- if(strcmp(val, data)>0){
- return strcmp(val, data);
- }
- return -1;
- }
- /*link CancOrdinata(link h, char k)
- {
- link x,p;
- if(h==NULL) return NULL;
- for(x=h, p=NULL; x!=NULL&&KEYgeq(k, KEYget(x->val)); p=x, x=x->next){
- if(KEYeq(KEYget(x->val),k)){
- if(x=h) h=x->next;
- else p->next=x->next;
- free(x);
- break;
- }
- }
- return h;
- }
- link RicOrdinata(link h, char k)
- {
- link x;
- for(x=h; x!=NULL&&KEYgeq(k, KEYget(x->val)); x=x->next){
- printf("\n");
- if(KEYeq(KEYget(x->val),k)) return h; //MODIFICARE
- }
- return h; //MODIFICARE
- }*/
- void Stampa(link x)
- {
- if(x==NULL)
- return;
- printf("%s ", x->val);
- Stampa(x->next);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement