Guild icon
#fridolin <3
TP5 C / ✅✅-parcours-en-largeur-arbres-et-files
Avatar
Aurehttps:// 19-Oct-22 10:26 AM
main.c #include <stdio.h> #include "node.h" #include "queue.h" int main() { t_queue_tab myqueue; myqueue = createEmptyQueue(); int cpt; for (cpt=1; cpt <=5; cpt++) { enqueue(&myqueue,createNode(cpt)); } displayQueue(myqueue); for (cpt=1; cpt <=3; cpt++) { dequeue(&myqueue); } displayQueue(myqueue); for (cpt=6; cpt <=10; cpt++) { enqueue(&myqueue,createNode(cpt)); } displayQueue(myqueue); for (cpt=1; cpt <=3; cpt++) { dequeue(&myqueue); } displayQueue(myqueue); for (cpt=11; cpt <=15; cpt++) { enqueue(&myqueue,createNode(cpt)); } displayQueue(myqueue); for (cpt=1; cpt <=3; cpt++) { dequeue(&myqueue); } displayQueue(myqueue); return 0; }
10:26
queue.c #include <stdio.h> #include "queue.h" t_queue_tab createEmptyQueue() { t_queue_tab q; q.first = q.last = 0; return q; } int isQueueEmpty(t_queue_tab q) { return (q.first == q.last); } int isQueueFull(t_queue_tab q) { return (q.last-q.first == MAX); } void enqueue(t_queue_tab *pq, p_node pn) { int pos; pos = pq->last % MAX; pq->values[pos] = pn; pq->last = pq->last+1; } p_node dequeue(t_queue_tab *pq) { p_node res; int pos = pq->first%MAX; res = pq->values[pos]; pq->first = pq->first+1; return res; } void displayQueue(t_queue_tab q) { printf(" out <- "); for (int cpt = q.first ; cpt < q.last; cpt++) { printf("%d <- ", q.values[cpt%MAX]->value); } printf("in\n"); return; }
10:26
queue.h #ifndef __QUEUE_H_INCLUDED__ #define __QUEUE_H_INCLUDED__ #define MAX 10 #include "node.h" typedef struct s_queue_tab { p_node values[MAX]; int first, last; } t_queue_tab; t_queue_tab createEmptyQueue(); int isQueueEmpty(t_queue_tab); int isQueueFull(t_queue_tab); void enqueue(t_queue_tab *, p_node); p_node dequeue(t_queue_tab *); void displayQueue(t_queue_tab); #endif
10:27
10:27
-----------------------------
10:27
bintree.c #include <stdio.h> #include "bintree.h" #include "queue.h" #include "node.h" void BFVisit(t_tree t) { t_queue_tab q = createEmptyQueue(); p_node cur; enqueue(&q,t.root); printf("[ "); while(!isQueueEmpty(q)) { cur = dequeue(&q); printf("%d :",cur->value); if(cur->left != NULL) { enqueue(&q,cur->left); } if(cur->right != NULL) { enqueue(&q,cur->right); } } printf("]"); return; }
10:28
queue.h #ifndef __QUEUE_H_INCLUDED__ #define __QUEUE_H_INCLUDED__ #define MAX 10 #include "node.h" typedef struct s_queue_tab { p_node values[MAX]; int first, last; } t_queue_tab; t_queue_tab createEmptyQueue(); int isQueueEmpty(t_queue_tab); int isQueueFull(t_queue_tab); void enqueue(t_queue_tab *, p_node); p_node dequeue(t_queue_tab *); void displayQueue(t_queue_tab); #endif
10:28
queue.c #include <stdio.h> #include "queue.h" t_queue_tab createEmptyQueue() { t_queue_tab q; q.first = q.last = 0; return q; } int isQueueEmpty(t_queue_tab q) { return (q.first == q.last); } int isQueueFull(t_queue_tab q) { return (q.last-q.first == MAX); } void enqueue(t_queue_tab *pq, p_node pn) { int pos; pos = pq->last % MAX; pq->values[pos] = pn; pq->last = pq->last+1; } p_node dequeue(t_queue_tab *pq) { p_node res; int pos = pq->first%MAX; res = pq->values[pos]; pq->first = pq->first+1; return res; } void displayQueue(t_queue_tab q) { printf(" out <- "); for (int cpt = q.first ; cpt < q.last; cpt++) { printf("%d <- ", q.values[cpt%MAX]->value); } printf("in\n"); return; }
Exported 9 message(s)