Lista

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: , , , , , , , ,

Lascia un Commento

Please log in using one of these methods to post your comment:

Logo WordPress.com

You are commenting using your WordPress.com account. Log Out / Modifica )

Foto Twitter

You are commenting using your Twitter account. Log Out / Modifica )

Foto di Facebook

You are commenting using your Facebook account. Log Out / Modifica )

Connecting to %s


Follow

Get every new post delivered to your Inbox.