Aiuto con ordinamento lista

di il
1 risposte

Aiuto con ordinamento lista

Buongiorno,
il programmino che sto cercando di scrivere, DOVREBBE ordinare una lista grazie a 4 funzioni void, 3 di input ed una "di collegamento".
tuttavia c'è un problema con la funzione "inserisci in mezzo". in pratica come devo fare per rimuovere la testa, inserire l'input maggiore del puntatore e rimettere la vecchia testa-lista? so che c'è da usare l'operatore delete ma come ?
Scusate ma sto studiando e mi sarebbe di grande aiuto un suggerimento.

Grazie Anticipatamente!
struct build{ [code]
float nod;

build* punt;

};

void inserisci_ordinato(build* &N,int var){
build* T; //puntatore tipo struct locale
T=new build; //inizializza il puntatore a nuova variabile struct (campo+pointer)
T->nod=var; //assegna il valore passato nel momento a variabile appena generata
T->punt=N; //assegna l'indirizzo del puntatore del main al puntatore del nodo per la variabile appena creata
N=T;//fai puntare N(puntatore del main) a T puntatore creato localmente

return;
}

void inserisci_fondo(build* &N,int x){
if(N==NULL) inserisci_ordinato(N,x);
else{
build* T=new build;
T->nod=x;
T->punt=NULL;
build* S=N;
while(S->punt!=NULL)
S=S->punt;
S->punt=T;}

return;
}

int cerca_max(build* N){
int h=0;
while(N!=NULL){
if(N->nod>h) h=N->nod;
N=N->punt;}

return h;
}

void inserisci_in_mezzo(build* &N,int x){
build* T=new build;
T->nod=x;
T->punt=NULL;
build* S=N;
int f;
f=cerca_max(N);
while(S->punt!=NULL&&S->nod<x)
S=S->punt;
S->punt=T;

return;
}


void mix(build* &N,int x){
int h;
if(N==NULL) inserisci_ordinato(N,x);
else {h=cerca_max(N);
if(x<N->nod) inserisci_ordinato(N,x);
else if(x>N->nod&&x>h) inserisci_fondo(N,x);
else if(x>N->nod&&x<h) inserisci_in_mezzo(N,x);}
return;
}

void output(build* N){
while(N!=NULL){
cout.width(6);
cout<<N->nod; //standard output di puntatore passato per riferimento a nod
N=N->punt;
}
return;
}



int main(){
build* mirino=NULL;
int var;
int g;
cout<<"inserire serie numerica"<<endl;
cin>>var;
while(var>=0){
mix(mirino,var);
cin>>var;
}
cout<<"stampa lista"<<endl;
cout<<endl;
output(mirino);
cout<<endl;

return 0;

}[/code]

1 Risposte

Devi accedere o registrarti per scrivere nel forum
1 risposte