OFFRO ANNUNCI DI QUALSIASI GENERE GRATIS!! CONTATTATEMI SU EMAIL LINKIAMOCI@EMAIL.IT!!

Ultra torrent

Chat

Tutto di tutto Headline Animator

domenica 10 ottobre 2010

Selection Sort su una lista bidirezionale in C

/* Implementare in una function C l'algoritmo Selection Sort su una lista bidirezionale.*/

#include
#include
#include
/* Tipo di dati */
typedef struct lista *lista_pointer;
typedef struct lista {
int dati;
lista_pointer precedente;
lista_pointer successivo;
} lista;
/* Prototipi di funzione */
void crea_lista();
void selection_sort();
lista_pointer valore_minimo(lista_pointer nodo);
void scambiare(lista_pointer x, lista_pointer y);

/* Variabili globali */
lista_pointer testa, testa2;
void main()
{
lista_pointer temp;
printf("QUESTO PROGRAMMA IMPLEMENTA L'ALGORITMO 'SELECTION SORT'\n");
printf("SU UNA LISTA BIDIREZIONALE\n\n\n");
/* Chiamata alla function per la creazione della lista bidirezionale */
crea_lista();
printf("LISTA BIDIREZIONALE 'NON ORDINATA'\n\n");
temp = testa;
/* Ciclo while che visualizza la lista disordinata */
while(temp != NULL) {
printf("[%d]->", temp->dati);
temp = temp->successivo;
}
printf("NULL\n\n");
/* Chiamata alla function selection_sort */
selection_sort();
printf("LISTA BIDIREZIONALE 'ORDINATA'\n\n");
temp = testa;
/* Ciclo while che visualizza la lista ordinata */
while(temp != NULL) {
printf("[%d]->", temp->dati);
temp = temp->successivo;
}
printf("NULL\n\n");
}

//Function selection_sort
void selection_sort()
{
lista_pointer minimo, temp;

temp = testa;
while(temp != NULL) {
/* Calcola il minimo */
minimo = valore_minimo(temp);
/* mette il minimo nella sua posizione */
scambiare(temp, minimo);
/* Accorcia la porzione da ordinare */
temp = temp->successivo;
}
}

//Function valore_minimo
lista_pointer valore_minimo(lista_pointer nodo)
{
lista_pointer minimo, temp;


minimo = nodo;
temp = minimo->successivo;

while(temp != NULL) {
if(temp->dati <>dati)
minimo = temp;
temp = temp->successivo;
}

return minimo;
}

//Function scambiare
void scambiare(lista_pointer x, lista_pointer y)
{
int dati;


dati = x->dati;
x->dati = y->dati;
y->dati = dati;
}



//Function crea_lista
void crea_lista()
{
srand (unsigned int) time(NULL);
lista_pointer nodo;
int i;


testa = (lista_pointer) malloc(sizeof(lista));
nodo = (lista_pointer) malloc(sizeof(lista));
testa2 =NULL;
nodo->precedente=nodo;
nodo->dati =rand()%50;
nodo->successivo=testa2;
for (i=2; i<8;i++)
{
nodo->precedente=nodo;
nodo->dati =rand()%50;
nodo->successivo=testa2;
}

testa->dati = rand()%50;
testa->precedente = NULL;
testa->successivo = nodo;
testa2->dati = rand()%50;
testa2->precedente = nodo;
testa2->successivo = NULL;

}

Nessun commento:

Qual'è il vostro broswer?