inserimento in lista ordinata
Von: AnarchiX (anarchix85@gmail.com) [Profil]
Datum: 12.06.2008 11:27
Message-ID: <8a46be43-c197-46c8-8af6-95416b2add4c@j22g2000hsf.googlegroups.com>
Newsgroup: it.comp.lang.c
Datum: 12.06.2008 11:27
Message-ID: <8a46be43-c197-46c8-8af6-95416b2add4c@j22g2000hsf.googlegroups.com>
Newsgroup: it.comp.lang.c
buongiorno
ho una lista di eventi (devo realizzare un'agenda):
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////
/** Nodo della lista che raccoglie gli eventi di una agenda */
typedef struct elem_t {
/** puntatore all'evento */
evento_t* ptev;
/** puntatore all'elemento successivo */
struct elem_t* next;
}
elem_t;
/** Rappresentazione di un evento */
typedef struct {
/** data formato gg-mm-aaaa */
char data[LDATA + 1];
/** utente che ha registrato l'evento */
char utente[LUTENTE + 1];
/** descrizione evento */
char descrizione[LDESCRIZIONE + 1];
}
evento_t;
NB: l'evento ha il formato:
gg/mm/aaaa user#descrizione_evento
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////
dovrei realizzare una funzione che aggiunga un elemento in una lista
ordinata. la funzione ha la seguente segnatura:
int add(elem_t** agenda, evento_t* ev);
Non riesco a trovare un algoritmo per inserire nel posto giusto
l'elemento!!
ho provato a fare come segue:
- estraggo la data dall'evento ev e la confronto con quella di tutti
gli elementi della lista fino a che non ne trovo uno che sia maggiore
o uguale. se è maggiore, inserisco subito prima di tale elemento,
altrimenti continuo;
- estraggo il nome utente da ev e lo confronto con quello degli
elementi della lista (a partire da dove mi sono fermato) fino a che la
data non è maggiore e il nome utente non è maggiore. appena posso,
inserisco, altrimenti continuo;
- estraggo la descrizione e faccio uguale.
può funzionare?? qualcuno può darmi una mano con tutti questi cicli??
mi incasino nelle condizioni!!!! :(
grazie mille
[ Auf dieses Posting antworten ]
