summaryrefslogtreecommitdiff
path: root/src/01/06/min_stack.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/01/06/min_stack.c')
-rw-r--r--src/01/06/min_stack.c16
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;