#include <stdio.h>#include <stdlib.h>#include <limits.h>// A structure to represent a stackstruct Stack{ int top; unsigned capacity; int* array;};// function to create a stack of given capacity. It initializes size of// stack as 0struct Stack* createStack(unsigned capacity){ struct Stack* stack = (struct Stack*) malloc(sizeof(struct Stack)); stack->capacity = capacity; stack->top = -1; stack->array = (int*) malloc(stack->capacity * sizeof(int)); return stack;}// Stack is full when top is equal to the last indexint isFull(struct Stack* stack){ return stack->top == stack->capacity - 1; }// Stack is empty when top is equal to -1int isEmpty(struct Stack* stack){ return stack->top == -1; }// Function to add an item to stack. It increases top by 1void push(struct Stack* stack, int item){ if (isFull(stack)) return; stack->array[++stack->top] = item; printf("%d pushed to stack\n", item);}// Function to remove an item from stack. It decreases top by 1int pop(struct Stack* stack){ if (isEmpty(stack)) return INT_MIN; return stack->array[stack->top--];}// Driver program to test above functionsint main(){ struct Stack* stack = createStack(100); push(stack, 10); push(stack, 20); push(stack, 30); printf("%d popped from stack\n", pop(stack)); return 0;}
OUTPUT:
10 pushed to stack 20 pushed to stack 30 pushed to stack 30 popped from stack Top item is 20
No comments:
Post a Comment