From 9891f38ddcca971fa21ab61e7a70832c8c877b0a Mon Sep 17 00:00:00 2001 From: Michael Hunteman Date: Sat, 23 Sep 2023 12:53:46 -0500 Subject: Initial commit --- stack.c | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 stack.c (limited to 'stack.c') diff --git a/stack.c b/stack.c new file mode 100644 index 0000000..a460629 --- /dev/null +++ b/stack.c @@ -0,0 +1,63 @@ +#include +#include + +struct node { + int val; + struct node *prev; +}; + +struct node *head; + +void +push(int val) +{ + struct node *tmp = malloc(sizeof(struct node)); + tmp->val = val; + tmp->prev = head; + head = tmp; +} + +int +pop() +{ + if (head == NULL) { + return -1; + } + struct node *tmp = head; + int val = tmp->val; + head = head->prev; + free(tmp); + return val; +} + +int +peek() +{ + return head == NULL ? -1 : head->val; +} + +void +print() +{ + struct node *cur = head; + while (cur != NULL) { + printf("%d ", cur->val); + cur = cur->prev; + } + printf("\n"); +} + +int +main() +{ + int val, n = 0; + printf("How many integers?\n"); + scanf("%d", &n); + for (int i = 0; i < n; ++i) { + printf("Enter an integer \n"); + scanf("%d", &val); + push(val); + print(); + } + return 0; +} -- cgit v1.2.3