View Full Version : [C] Ordinamento lista dinamica
ragazzi sto impazzendo non riesco a fare l'ordinamento di una lista dinamica, a logica ho capito come devo fare ma non ci riesco.
Help!
grazie,ciao =)
Fenomeno85
15-02-2005, 14:44
ma vuoi inserimento ordinato o hai una lista e la vuoi ordinare?
~§~ Sempre E Solo Lei ~§~
Fenomeno85
15-02-2005, 15:44
te alla fine si basa su un inserimento ordinato:
#include <stdio.h>
#include <stdlib.h>
typedef struct EL{
int iVal;
struct EL *pNext;
}Node;
void ins_ord(Node **pTesta, int iVal){
Node *pPrec, *pApp, *pCorr;
pPrec = NULL;
pCorr = *pTesta;
pApp = (Node*)malloc(sizeof(Node));
pApp->iVal = iVal;
while (pCorr!=NULL && pCorr->iVal<iVal){
pPrec = pCorr;
pCorr = pCorr->pNext;
}
if (pPrec == NULL){
pApp->pNext = *pTesta;
*pTesta = pApp;
}
else{
pPrec->pNext = pApp;
pApp->pNext = pCorr;
}
}
Node* Ordina (Node **pTesta){
Node *pApp, *pTestaOrd;
pTestaOrd = NULL;
while (*pTesta!=NULL){
ins_ord (&pTestaOrd, (*pTesta)->iVal);
pApp = *pTesta;
*pTesta=(*pTesta)->pNext;
free(pApp);
}
return (pTestaOrd);
}
void visualizza (Node *pTesta){
if (pTesta ==NULL) return;
printf ("\nvalore:\t%d\n\n",pTesta->iVal);
visualizza (pTesta->pNext);
}
void inserisci (Node **pTesta, int iVal){
Node *pApp;
pApp = (Node*)malloc(sizeof(Node));
pApp->iVal = iVal;
pApp->pNext = *pTesta;
*pTesta = pApp;
}
int main (void){
Node *Testa, *pApp;
Testa = NULL;
inserisci (&Testa, 1);
inserisci (&Testa, 20);
inserisci (&Testa, 11);
inserisci (&Testa, 21);
inserisci (&Testa, 150);
visualizza (Testa);
Testa = Ordina (&Testa);
printf ("\n\nLista 2");
visualizza (Testa);
system ("PAUSE");
return (0);
}
si potrebbe migliorare spostando direttamente il nodo anziche passare il valore allocare lo spazio e distruggere il nodo precedente.
~§~ Sempre E Solo Lei ~§~
Originariamente inviato da Fenomeno85
si potrebbe migliorare spostando direttamente il nodo anziche passare il valore allocare lo spazio e distruggere il nodo precedente.
~§~ Sempre E Solo Lei ~§~
infatti la volevo così :D spostando il nodo invece di usare l'inserimento ordinato
Fenomeno85
15-02-2005, 17:18
Originariamente inviato da SteR9
infatti la volevo così :D spostando il nodo invece di usare l'inserimento ordinato
be ma l'inserimento del nodo è sempre in modo ordinato ... anche se sposti solo il nodo. Devi modificare solo la funzione e invece di passare il valore passi il nodo.
~§~ Sempre E Solo Lei ~§~
Originariamente inviato da Fenomeno85
be ma l'inserimento del nodo è sempre in modo ordinato ... anche se sposti solo il nodo. Devi modificare solo la funzione e invece di passare il valore passi il nodo.
~§~ Sempre E Solo Lei ~§~
ma io vorrei una funzione che ordina senza usare quella dell'inserimento ordinato, ormai è una questione di principio :sofico:
Fenomeno85
16-02-2005, 10:30
Originariamente inviato da SteR9
ma io vorrei una funzione che ordina senza usare quella dell'inserimento ordinato, ormai è una questione di principio :sofico:
è l'unico metodo alla fine la devi per forza scorrere dato che hai solo una testa.
~§~ Sempre E Solo Lei ~§~
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.