Skip to content
Extraits de code Groupes Projets
Valider d274ae0b rédigé par Diego Houtart's avatar Diego Houtart
Parcourir les fichiers

add files (queue)

parent d9368db3
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Fichier ajouté
#include <stdio.h>
#include <stdlib.h>
#include "queue.h"
int main(){
queue_t* my_queue = init_queue();
enqueue(my_queue, 42);
printf("One node added, size = %d\n",my_queue->size);
enqueue(my_queue, 43);
enqueue(my_queue, 44);
printf("First node added had value %d\n", dequeue(my_queue));
printf("Second node added had value %d\n", dequeue(my_queue));
return 0;
}
\ No newline at end of file
Fichier ajouté
all:
gcc main.c queue.c -o main
./main
clean:
rm *.o
\ No newline at end of file
#include <stdio.h>
#include <stdlib.h>
#include "queue.h"
typedef struct node{
struct node* next;
int value;
} node_t;
typedef struct queue{
struct node* tail;
int size;
} queue_t;
queue_t* init_queue(){
queue_t* newQueue = (queue_t*)malloc(sizeof(queue_t));
newQueue->size = 0;
newQueue->tail = NULL;
return newQueue;
}
int enqueue(queue_t* q, int val){
struct node *newNode = (struct node*) malloc(sizeof(struct node));
if(!newNode) return -1;
newNode->value = val;
if(q->tail == NULL){
newNode->next = newNode;
q->tail = newNode;
}
else{
newNode->next = q->tail->next;
q->tail->next = newNode;
}
q->size ++;
return 0;
}
int dequeue(queue_t* q){
int tbr = q->tail->value; //to be returned
if(q->size == 1){
free(q->tail);
q->tail = NULL;
q->size--;
return tbr;
}else{
struct node *cur = q->tail;
for(int i = 0; i < q->size - 1; i++){
cur = cur->next;
}
struct node *old = cur->next;
cur->next = old->next;
q->tail = cur;
free(old);
free(cur);
q->size --;
return tbr;
}
return 0;
}
\ No newline at end of file
#ifndef QUEUE_H
#define QUEUE_H
typedef struct node node_t;
typedef struct queue queue_t;
queue_t* init_queue();
int enqueue(queue_t* q, int val);
int dequeue(queue_t* q);
#endif
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter