diff options
| author | mo khan <mo.khan@gmail.com> | 2020-07-04 13:04:54 -0600 |
|---|---|---|
| committer | mo khan <mo.khan@gmail.com> | 2020-07-04 13:04:54 -0600 |
| commit | 24700ade3ae9ff643b0c092ff617fb065d9f19f1 (patch) | |
| tree | 186b70d02e3c9ab11c54ea9d3ff81f167ec6148f /src/01/01b/min_stack.c | |
| parent | e93f71c94f7f70b759cd442fa7d66c2a25ee3800 (diff) | |
Switch 06 and 01b
Diffstat (limited to 'src/01/01b/min_stack.c')
| -rw-r--r-- | src/01/01b/min_stack.c | 72 |
1 files changed, 0 insertions, 72 deletions
diff --git a/src/01/01b/min_stack.c b/src/01/01b/min_stack.c deleted file mode 100644 index adb96c8..0000000 --- a/src/01/01b/min_stack.c +++ /dev/null @@ -1,72 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include "min_stack.h" - -Stack *initialize() { - Stack *self = malloc(sizeof(Stack)); - self->head = NULL; - return self; -} - -int size(Stack *self) { - Node *current = self->head; - int i; - for (i = 0; current != NULL; i++) - current = current->next; - return i; -} - -static Node *new(int data) { - Node *node = malloc(sizeof(Node)); - node->next = NULL; - node->data = data; - return node; -} - -static int compare(int x, int y) { - return x == y ? 0 : (x > y) ? 1 : -1; -} - -static void insert(Node **self, int data) { - int comparison = compare(data, (*self)->data); - Node *node = new(data); - - switch(comparison) { - case 1: - if ((*self)->next) - insert(&((*self)->next), data); - else - (*self)->next = node; - break; - default: - node->next = *self; - *self = node; - break; - } -} - -void push(Stack *self, int data) { - if (self->head) - insert(&self->head, data); - else - self->head = new(data); -} - -int min(Stack *self) { - if (self && self->head) - return self->head->data; - - return (int)NULL; -} - -int pop(Stack *self) { - if (!self->head) - return (int)NULL; - - Node *current = self->head; - int data = current->data; - self->head = current->next; - current->next = NULL; - free(current); - return data; -} |
