summaryrefslogtreecommitdiff
path: root/src/01
diff options
context:
space:
mode:
Diffstat (limited to 'src/01')
-rw-r--r--src/01/06/README.md10
-rw-r--r--src/01/06/main.c29
-rw-r--r--src/01/06/min_stack.c2
-rw-r--r--src/01/06/min_stack.h2
4 files changed, 35 insertions, 8 deletions
diff --git a/src/01/06/README.md b/src/01/06/README.md
index f288e0f..c02bf45 100644
--- a/src/01/06/README.md
+++ b/src/01/06/README.md
@@ -3,14 +3,14 @@
Name: Mo Khan
Student ID: 3431709
-1. Problem Statement:
+## Problem Statement
Design and implement a MinStack data structure that can store comparable elements and supports the stack operations `push(x)`, `pop()`, and `size()`,
as well as the `min()` operation, which returns the minimum value currently stored in the data structure.
All operations should run in constant time.
-2. Description of the Code:
-3. Errors and Warnings:
-4. Sample Input and Output:
-5. Discussion:
+## Description of the Code
+## Errors and Warnings
+## Sample Input and Output
+## Discussion
diff --git a/src/01/06/main.c b/src/01/06/main.c
index f90e37f..104a000 100644
--- a/src/01/06/main.c
+++ b/src/01/06/main.c
@@ -1,8 +1,35 @@
+#include "min_stack.h"
#include <stdio.h>
#include <stdlib.h>
+void inspect(Stack *stack)
+{
+ Node *head = stack->head;
+
+ while(head) {
+ printf("\t [%7d]\n", head->data);
+ head = head->next;
+ }
+}
+
int main(int argc, char *argv[])
{
- printf("=== COMP-272 - Assignment 1 - Question 1b ===\n");
+ printf("=== COMP-272 - Assignment 1 - Question 6 ===\n");
+
+ Stack *stack = initialize();
+
+ for (int i = 0; i < 10; i++) {
+ int data = rand() % 100;
+ printf("Push: %d\n", data);
+ push(stack, data);
+ inspect(stack);
+ }
+
+ while(size(stack) > 0) {
+ printf("Pop: %d\n", pop(stack));
+ inspect(stack);
+ }
+
+ free(stack);
return 0;
}
diff --git a/src/01/06/min_stack.c b/src/01/06/min_stack.c
index adb96c8..6f8511b 100644
--- a/src/01/06/min_stack.c
+++ b/src/01/06/min_stack.c
@@ -2,7 +2,7 @@
#include <stdlib.h>
#include "min_stack.h"
-Stack *initialize() {
+Stack *initialize(void) {
Stack *self = malloc(sizeof(Stack));
self->head = NULL;
return self;
diff --git a/src/01/06/min_stack.h b/src/01/06/min_stack.h
index 567b0a4..442a63b 100644
--- a/src/01/06/min_stack.h
+++ b/src/01/06/min_stack.h
@@ -9,7 +9,7 @@ typedef struct {
Node *head;
} Stack;
-Stack *initialize();
+Stack *initialize(void);
void push(Stack *self, int data);
int pop(Stack *self);
int size(Stack *self);