summaryrefslogtreecommitdiff
path: root/src/01/01b/min_stack.c
diff options
context:
space:
mode:
authormo khan <mo.khan@gmail.com>2020-07-04 13:04:54 -0600
committermo khan <mo.khan@gmail.com>2020-07-04 13:04:54 -0600
commit24700ade3ae9ff643b0c092ff617fb065d9f19f1 (patch)
tree186b70d02e3c9ab11c54ea9d3ff81f167ec6148f /src/01/01b/min_stack.c
parente93f71c94f7f70b759cd442fa7d66c2a25ee3800 (diff)
Switch 06 and 01b
Diffstat (limited to 'src/01/01b/min_stack.c')
-rw-r--r--src/01/01b/min_stack.c72
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;
-}