PDA

View Full Version : C - Ordinamento di Lista già creata


tony88
18-06-2008, 11:42
Salve a tutti,
vorrei sapere se è possibile ordinare sotto una certa chiave i nodi di una lista (dopo averla creata in modo disordinato) solamente facendo uno scambio dei puntatori ai nodi oppure se devo scambiare tutti i campi di ogni nodo.

se è possibile il primo modo potete fare qualke esempio secondo una chiave intera per rendere l'idea?.

Grazie.

tony88
19-06-2008, 08:51
Help :help:

DanieleC88
20-06-2008, 15:35
Scritta ora al volo, dovrebbe funzionare.

struct node
{
int key;
struct node *next;
}

typedef struct node *node;
typedef node *list;

/* PRE: first != NULL, second != NULL. */
void node_swap(node **first, node **second)
{
node *temp = (*first);

(*first) = (*second);
(*second) = temp;
}

void list_sort(list *l)
{
if (l == NULL || (*l)->next == NULL)
{
return;
}

if ((*l)->key > (*l)->next->key)
{
node_swap(l, &((*l)->next));
}
list_sort(&((*l)->next));
}