84 lines
1.6 KiB
C
84 lines
1.6 KiB
C
#include "testprint.h"
|
|
|
|
void print_stacks(int h, int nb, ...) {
|
|
va_list liste;
|
|
va_start(liste, nb);
|
|
stack **tab;
|
|
int i, j, max = 1;
|
|
|
|
MALLOC(tab, nb);
|
|
for (i = 0; i < nb; i++) {
|
|
tab[i] = va_arg(liste, stack *);
|
|
CHECK_NULL(2, tab[i], "The stack", tab[i]->array,
|
|
"The array used to implement the stack");
|
|
}
|
|
|
|
// Récupération de la hauteur maximum parmi les piles.
|
|
for (i = 0; i < nb; i++)
|
|
if (tab[i]->size_stack > max)
|
|
max = tab[i]->size_stack;
|
|
|
|
for (j = h; j > max; j--) {
|
|
PRINT_BLANK;
|
|
|
|
for (i = 1; i < nb; i++) {
|
|
PRINT_BLANK;
|
|
PRINT_BLANK;
|
|
}
|
|
printf("\n");
|
|
}
|
|
|
|
// Affichage des piles.
|
|
for (j = max; j > 0; j--) {
|
|
if (tab[0]->size_stack < j)
|
|
PRINT_BLANK;
|
|
else
|
|
printf("%" xstr(MAX_SIZE_INT_STACK) "d", tab[0]->array[j - 1]);
|
|
for (i = 1; i < nb; i++) {
|
|
PRINT_BLANK;
|
|
if (tab[i]->size_stack < j)
|
|
PRINT_BLANK;
|
|
else
|
|
printf("%" xstr(MAX_SIZE_INT_STACK) "d", tab[i]->array[j - 1]);
|
|
}
|
|
printf("\n");
|
|
}
|
|
|
|
PRINT_STARS;
|
|
|
|
for (i = 1; i < nb; i++) {
|
|
PRINT_BLANK;
|
|
PRINT_STARS;
|
|
}
|
|
printf("\n");
|
|
|
|
free(tab);
|
|
va_end(liste);
|
|
}
|
|
|
|
void print_queue(const queue *p) {
|
|
printf("File:");
|
|
if (isempty_queue(p)) {
|
|
printf(" vide\n");
|
|
return;
|
|
}
|
|
int i = p->left;
|
|
if (i < p->right)
|
|
while (i < p->right) {
|
|
printf("%4d", p->array[i]);
|
|
i++;
|
|
}
|
|
else {
|
|
while (i < p->size_array) {
|
|
printf("%4d", p->array[i]);
|
|
i++;
|
|
}
|
|
i = 0;
|
|
while (i < p->right) {
|
|
printf("%4d", p->array[i]);
|
|
i++;
|
|
}
|
|
}
|
|
printf("\n");
|
|
}
|