Commit 55db5b3

mo khan <mo.khan@gmail.com>
2020-07-05 19:32:24
Add parameter to initialize Node with nex
1 parent c1eba56
Changed files (1)
src
src/01/06/min_stack.c
@@ -2,9 +2,9 @@
 #include <stdlib.h>
 #include "min_stack.h"
 
-static Node *new(int data) {
+static Node *new(int data, Node *next) {
   Node *node = malloc(sizeof(Node));
-  node->next = NULL;
+  node->next = next;
   node->data = data;
   return node;
 }
@@ -22,17 +22,10 @@ int size(Stack *self) {
 }
 
 void push(Stack *self, int data) {
-  if (!self->min)
-    self->min = new(data);
-  else if (data < self->min->data) {
-    Node *tmp = new(data);
-    tmp->next = self->min;
-    self->min = tmp;
-  }
+  if (!self->min || (data < self->min->data))
+    self->min = new(data, self->min);
 
-  Node *node = new(data);
-  node->next = self->head;
-  self->head = node;
+  self->head = new(data, self->head);
   self->size++;
 }
 
@@ -79,13 +72,11 @@ int pop(Stack *self) {
   return data;
 }
 
-void print_node(Node *node)
-{
+void print_node(Node *node) {
   printf("[%d]", node->data);
 }
 
-void inspect(Stack *stack)
-{
+void inspect(Stack *stack) {
   printf("\t");
   each(stack->head, &print_node);
   printf("\n");