Implementazione parziale in Linguaggio C di una Lista, sono riportate soltanto le funzioni necessarie per il BucketSort.
#ifndef QUEUE
#define QUEUE
#include
#include
typedef struct s_queue {
void* val;
int key;
struct s_queue *next;
} queue_t;
//inizializza la lista
queue_t* queue_init(queue_t** head){
*head = NULL;
return *head;
}
//restituisce l'ultimo elemento nella lista
queue_t* queue_tail(queue_t* head){
if(head == NULL)return NULL;
queue_t* dummy = head;
while(dummy->next != NULL)
dummy = dummy->next;
return dummy;
}
//restituisce il numero di nodi della lista
int queue_nodeNum(queue_t* head){
int i = 0;
queue_t* dummy = head;
while(dummy != NULL){
i++;
dummy = dummy->next;
}
return i;
}
//concatena due liste
queue_t* queue_enqueue(queue_t* head, queue_t* node){
if(node==NULL)return NULL;
queue_t* tail = queue_tail(head);
if(tail == NULL)
head = node;
else
tail->next = node;
return head;
}
//accoda un elemento alla lista
queue_t* queue_enqueueOne(queue_t* head, queue_t* node){
if(node==NULL)return head;
node->next = NULL;
if(head == NULL)
head = node;
else{
queue_t* tail = queue_tail(head);
tail->next = node;
}
return head;
}
//crea un nuovo nodo
queue_t* queue_newNode(void* val, int key){
queue_t* node = (queue_t*)malloc(sizeof(queue_t));
node->next = NULL;
node->val = val;
node->key = key;
return node;
}
#endif
Etichette: algoritmo, coda, code, implementazione, linguaggio c, list, lista, liste, queue