diff options
Diffstat (limited to 'src/01/06/min_stack.c')
| -rw-r--r-- | src/01/06/min_stack.c | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/src/01/06/min_stack.c b/src/01/06/min_stack.c index 7567cd6..867dce8 100644 --- a/src/01/06/min_stack.c +++ b/src/01/06/min_stack.c @@ -22,14 +22,12 @@ int size(Stack *self) { } void push(Stack *self, int data) { - if (self->min) { - if (data < self->min->data) { - Node *tmp = new(data); - tmp->next = self->min; - self->min = tmp; - } - } else { + if (!self->min) self->min = new(data); + else if (data < self->min->data) { + Node *tmp = new(data); + tmp->next = self->min; + self->min = tmp; } Node *node = new(data); @@ -72,10 +70,8 @@ int pop(Stack *self) { Node *current = self->head; int data = current->data; - if (data == self->min->data) { + if (data == self->min->data) self->min = self->min->next; - } - self->head = current->next; self->size--; current->next = NULL; |
