Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ************************************************************MAIN DI PROVA*******************************************************
- #include <stdio.h>
- #include "lista.h"
- #include "persona.h"
- int main(int argc, char **argv)
- {
- list_t lista=allocaLista();
- persona p;
- p=NewPersona("nino","musmeci");
- SortListIns(lista,p);
- p=NewPersona("giovanni","rossi");
- SortListIns(lista,p);
- p=NewPersona("francesco","russo");
- SortListIns(lista,p);
- p=NewPersona("mario","ancona");
- SortListIns(lista,p);
- StampaLista(lista);
- return 0;
- }
- *****************************************************INTERFACCIA LISTA****************************************************
- #ifndef H_LISTA
- #define H_LISTA
- #include "persona.h"
- typedef struct list *list_t;
- list_t allocaLista();
- void SortListIns(list_t l,persona p);
- void StampaLista(list_t l);
- #endif
- ***********************************************************IMPLEMENTAZIONE*******************************************************
- #include <stdlib.h>
- #include <stdio.h>
- #include <string.h>
- #include "lista.h"
- typedef struct node *link;
- // definizione nodo della lista
- struct node{
- persona p;
- link next;
- };
- //definizione wrapper della lista
- struct list{
- link head; // puntatore alla testa della lista;
- int N; //lunghezza della lista;
- };
- // funzione di creazione della lista
- list_t allocaLista(){
- list_t l;
- l=malloc(sizeof(*l));
- l->head=NULL;
- l->N=0;
- return l;
- }
- // funzione di allocazione di un nodo
- link NewNode(persona p,link t){
- link x;
- x=malloc(sizeof(*x));
- x->p=p;
- x->next=t;
- return x;
- }
- // funzione di inserimento in ordine
- void SortListIns(list_t l,persona pe){
- link x,p;
- // lista vuota -> inserimento in testa
- if(l->head==NULL || ConfrontaPersona(l->head->p,pe)>0)
- l->head=NewNode(pe,l->head);
- // devo cercare la posizione dove inserire p;
- else{
- for(x=l->head->next,p=l->head; x!=NULL && ConfrontaPersona(l->head->p,pe)>0;p=x,x=x->next);
- p->next=NewNode(pe,x);
- }
- }
- void StampaLista(list_t l){
- link x;
- for(x=l->head;x!=NULL;x=x->next){
- Stampa(x->p);
- }
- }
- ***************************************************************PERSONA***************************************************************
- #ifndef H_PERSONA
- #define H_PERSONA
- typedef struct {
- char *nome;
- char *cognome;
- }persona;
- int ConfrontaPersona(persona p1,persona p2);
- persona NewPersona(char *s1,char *s2);
- void Stampa(persona p);
- #endif
- ************************************************************************************************************************************
- #include "persona.h"
- #include <stdlib.h>
- #include <string.h>
- #include <stdio.h>
- persona NewPersona(char *s1,char *s2){
- persona p;
- p.nome=strdup(s1);
- p.cognome=strdup(s2);
- return p;
- }
- int ConfrontaPersona(persona p1,persona p2){
- int confronto;
- confronto=strcmp(p1.cognome,p2.cognome);
- if(confronto==0)
- return strcmp(p1.nome,p2.nome);
- return confronto;
- }
- void Stampa(persona p){
- printf("%s %s\n",p.nome,p.cognome);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement