Commit 96a3f4c

mo khan <mo.khan@gmail.com>
2020-06-18 04:16:10
Free node not queue
1 parent 1a11328
Changed files (1)
assignments
assignments/01/stack_test.c
@@ -66,11 +66,13 @@ void enqueue(Queue *q, int data) {
 }
 
 int dequeue(Queue *q) {
+  if (q->head == NULL) return -1;
+
   Node *node = q->head;
   int data = node->data;
 
   q->head = node->next;
-  free(q);
+  free(node);
   return data;
 }
 
@@ -78,16 +80,20 @@ static void push(Stack *stack, int data) {
   enqueue(stack->q1, data);
 }
 
+void swap(Stack *stack) {
+  Queue *tmp = stack->q1;
+  stack->q1 = stack->q2;
+  stack->q2 = tmp;
+}
+
 static int pop(Stack *stack) {
   int count = stack->q1->size - 1;
-  for (int i = 0; i < count; i++) {
+
+  for (int i = 0; i < count; i++)
     enqueue(stack->q2, dequeue(stack->q1));
-  }
 
   int data = dequeue(stack->q1);
-  Queue *tmp = stack->q1;
-  stack->q1 = stack->q2;
-  stack->q2 = tmp;
+  swap(stack);
   return data;
 }
 // push 1, 2, 3, 4
@@ -99,6 +105,13 @@ int size(Stack *stack) {
 }
 
 static void destroy(Stack *stack) {
+  /*int count = size(stack);*/
+
+  /*for (int i = 0; i < count; i++)*/
+    /*pop(stack);*/
+
+  /*free(stack->q1);*/
+  /*free(stack->q2);*/
   free(stack);
 }