diff --git a/slides/cours_11.md b/slides/cours_11.md index 40403b56675b8b06925302889b7db510354b7411..347fecb092ff307912e87523ade88ec1097f382c 100644 --- a/slides/cours_11.md +++ b/slides/cours_11.md @@ -294,7 +294,9 @@ typedef struct _element { int data; struct _element *next; } element; -typedef element* stack; +typedef struct _stack { + element *top; +} stack; ``` ## Fonctionnalités? @@ -302,12 +304,12 @@ typedef element* stack; . . . ```C -void stack_create(stack *s); // *s = NULL; +void stack_create(stack *s); // s->top = NULL; void stack_destroy(stack *s); void stack_push(stack *s, int val); void stack_pop(stack *s, int *val); void stack_peek(stack s, int *val); -bool stack_is_empty(stack s); // return NULL == stack; +bool stack_is_empty(stack s); // return NULL == s.top; ``` # La liste chaînée et pile (3/6) @@ -335,7 +337,7 @@ void stack_push(stack *s, int val) { element *elem = malloc(sizeof(*elem)); elem->data = val; elem->next = *s; - *s = elem; + s->top = elem; } ``` @@ -361,7 +363,7 @@ void stack_push(stack *s, int val) { ```C void stack_peek(stack s, int *val) { - *val = s->data; + *val = s.top->val; } ``` @@ -388,8 +390,8 @@ void stack_peek(stack s, int *val) { ```C void stack_pop(stack *s, int *val) { stack_peek(*s, val); - element *tmp = *s; - *s = (*s)->next; + element *tmp = s->top; + s->top = s->top->next; free(tmp); } ```