Nightcrawler
04-12-2003, 21:03
per favore ho bisogno urgente di una funzione che separa due liste dinamiche disordinate di elementi con la seguente struct:
struct coda { //Definizione struttura coda
char nome[20]; //Nome prenotazione
int macchine; //Macchine prenotazione
int persone; //Persone prenotazione
coda *punt; //Puntatore lista
};
ecco la mia ma non so perchè non funziona
# define MAX_MACCHINE 20 //Numero massimo di macchine
# define MAX_PERSONE 100 //Numero massimo di persone
void separa(coda*&pt1,coda*&fine1,coda*&pt2,coda*&fine2,int *mac_occ,int *pers_occ)
{
coda *aux,*aux2;
aux=pt1;
pt1=fine1=NULL;
while(aux!=NULL)
{
aux2=(*aux).punt;
if(*mac_occ+(*aux).macchine<=MAX_MACCHINE && *pers_occ+(*aux).persone<=MAX_PERSONE)
{
inserisci(pt2,fine2,aux);
*mac_occ+=(*aux).macchine;
*pers_occ+=(*aux).persone;
}
else
inserisci(pt1,fine1,aux);
aux=aux2;
}
}
void inserisci(coda *&pt,coda *&pc,coda *nuovo)
{
if(pt==NULL)
pt=pc=nuovo;
else
{
(*pc).punt=nuovo;
pc=nuovo;
}
(*pc).punt=NULL;
}
pt1 e pt2 sono i puntatori di testa delle liste, fine1 e fine2 sono quelli di coda. mac_occ e pers_occ sono due variabili intere non contenenti numeri negativi.
PER FAVORE AIUTATEMI NE HO BISOGNO URGENTE
struct coda { //Definizione struttura coda
char nome[20]; //Nome prenotazione
int macchine; //Macchine prenotazione
int persone; //Persone prenotazione
coda *punt; //Puntatore lista
};
ecco la mia ma non so perchè non funziona
# define MAX_MACCHINE 20 //Numero massimo di macchine
# define MAX_PERSONE 100 //Numero massimo di persone
void separa(coda*&pt1,coda*&fine1,coda*&pt2,coda*&fine2,int *mac_occ,int *pers_occ)
{
coda *aux,*aux2;
aux=pt1;
pt1=fine1=NULL;
while(aux!=NULL)
{
aux2=(*aux).punt;
if(*mac_occ+(*aux).macchine<=MAX_MACCHINE && *pers_occ+(*aux).persone<=MAX_PERSONE)
{
inserisci(pt2,fine2,aux);
*mac_occ+=(*aux).macchine;
*pers_occ+=(*aux).persone;
}
else
inserisci(pt1,fine1,aux);
aux=aux2;
}
}
void inserisci(coda *&pt,coda *&pc,coda *nuovo)
{
if(pt==NULL)
pt=pc=nuovo;
else
{
(*pc).punt=nuovo;
pc=nuovo;
}
(*pc).punt=NULL;
}
pt1 e pt2 sono i puntatori di testa delle liste, fine1 e fine2 sono quelli di coda. mac_occ e pers_occ sono due variabili intere non contenenti numeri negativi.
PER FAVORE AIUTATEMI NE HO BISOGNO URGENTE