From 1da425b0103d91932943d94fe016b9de8d32d674 Mon Sep 17 00:00:00 2001 From: ch2br58 <116263409+ch2br58@users.noreply.github.com> Date: Thu, 20 Oct 2022 10:44:35 +0100 Subject: [PATCH] Create stack.c --- Stack/C/stack.c | 87 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 Stack/C/stack.c diff --git a/Stack/C/stack.c b/Stack/C/stack.c new file mode 100644 index 0000000..d4faca4 --- /dev/null +++ b/Stack/C/stack.c @@ -0,0 +1,87 @@ +// Stack implementation in C + +#include +#include + +#define MAX 10 + +int count = 0; + +// Creating a stack +struct stack { + int items[MAX]; + int top; +}; +typedef struct stack st; + +void createEmptyStack(st *s) { + s->top = -1; +} + +// Check if the stack is full +int isfull(st *s) { + if (s->top == MAX - 1) + return 1; + else + return 0; +} + +// Check if the stack is empty +int isempty(st *s) { + if (s->top == -1) + return 1; + else + return 0; +} + +// Add elements into stack +void push(st *s, int newitem) { + if (isfull(s)) { + printf("STACK FULL"); + } else { + s->top++; + s->items[s->top] = newitem; + } + count++; +} + +// Remove element from stack +void pop(st *s) { + if (isempty(s)) { + printf("\n STACK EMPTY \n"); + } else { + printf("Item popped= %d", s->items[s->top]); + s->top--; + } + count--; + printf("\n"); +} + +// Print elements of stack +void printStack(st *s) { + printf("Stack: "); + for (int i = 0; i < count; i++) { + printf("%d ", s->items[i]); + } + printf("\n"); +} + +// Driver code +int main() { + int ch; + st *s = (st *)malloc(sizeof(st)); + + createEmptyStack(s); + + push(s, 1); + push(s, 2); + push(s, 3); + push(s, 4); + + printStack(s); + + pop(s); + + printf("\nAfter popping out\n"); + printStack(s); +}