69 lines
2.9 KiB
C
69 lines
2.9 KiB
C
|
#include <stdlib.h>
|
||
|
#include <stdio.h>
|
||
|
typedef struct maillon_s {
|
||
|
struct maillon_s* next;
|
||
|
int value;
|
||
|
} maillon;
|
||
|
|
||
|
int Empty(maillon* first) {
|
||
|
if (first == NULL) {
|
||
|
return 1;
|
||
|
}
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
void Push(int value, maillon* first) {
|
||
|
maillon* p = malloc(sizeof(maillon));
|
||
|
if (!Empty(first)) {
|
||
|
p->value = first->value;
|
||
|
p->next = first->next;
|
||
|
first->next = p;
|
||
|
first->value = value;
|
||
|
} else {
|
||
|
first->value = value;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
int Pop(maillon* first) {
|
||
|
maillon* p;
|
||
|
int value;
|
||
|
if (Empty(first)) {
|
||
|
return 1000;
|
||
|
}
|
||
|
value = first->value;
|
||
|
if (first->next==NULL) {
|
||
|
first = NULL;
|
||
|
} else {
|
||
|
p = first->next;
|
||
|
first->value = p->value;
|
||
|
first->next = p->next;
|
||
|
free(p);
|
||
|
}
|
||
|
return value;
|
||
|
}
|
||
|
|
||
|
void PrintList(maillon* first) {
|
||
|
maillon* p;
|
||
|
for (p=first ; p != NULL; p = p->next) {
|
||
|
printf("%d ", p->value);
|
||
|
}
|
||
|
printf("\n");
|
||
|
}
|
||
|
|
||
|
int main(int argc, char const *argv[]) {
|
||
|
maillon* first = malloc(sizeof(maillon));
|
||
|
Push(45, first);
|
||
|
PrintList(first);
|
||
|
|
||
|
return EXIT_SUCCESS;
|
||
|
}a pile, tandis que clear retire toutes les données de la pile et ne renvoie rien. Ces opérations peuvent être vues comme des combinaisons des opérations basiques, mais en leur donnant leur propre codage on peut en améliorer les performances.
|
||
|
|
||
|
Ajoutez au programme du premier exercice deux fonctions qui représentent ces opérations. Imaginez et réalisez de nouveaux ordres pour tester ces fonctions. a pile, tandis que clear retire toutes les données de la pile et ne renvoie rien. Ces opérations peuvent être vues comme des combinaisons des opérations basiques, mais en leur donnant leur propre codage on peut en améliorer les performances.
|
||
|
|
||
|
Ajoutez au programme du premier exercice deux fonctions qui représentent ces opérations. Imaginez et réalisez de nouveaux ordres pour tester ces fonctions. a pile, tandis que clear retire toutes les données de la pile et ne renvoie rien. Ces opérations peuvent être vues comme des combinaisons des opérations basiques, mais en leur donnant leur propre codage on peut en améliorer les performances.
|
||
|
|
||
|
Ajoutez au programme du premier exercice deux fonctions qui représentent ces opérations. Imaginez et réalisez de nouveaux ordres pour tester ces fonctions. a pile, tandis que clear retire toutes les données de la pile et ne renvoie rien. Ces opérations peuvent être vues comme des combinaisons des opérations basiques, mais en leur donnant leur propre codage on peut en améliorer les performances.
|
||
|
|
||
|
Ajoutez au programme du premier exercice deux fonctions qui représentent ces opérations. Imaginez et réalisez de nouveaux ordres pour tester ces fonctions. a pile, tandis que clear retire toutes les données de la pile et ne renvoie rien. Ces opérations peuvent être vues comme des combinaisons des opérations basiques, mais en leur donnant leur propre codage on peut en améliorer les performances.
|
||
|
|
||
|
Ajoutez au programme du premier exercice deux fonctions qui représentent ces opérations. Imaginez et réalisez de nouveaux ordres pour tester ces fonctions.
|