In continuation of demonstrating simple implementation of data structures, as we shown in our last post “How to implement linked list in C programming ?”, in this post we will show how you can implement simple stack in C programming language. Stack is nothing but a one this kept on another, where we define how many maximum elements can be kept in one stack and what is the current size of the stack.
$ vim simple_stack.c
#include <stdio.h>
#include <stdlib.h>
struct stack {
int top;
int max_elements_in_stack;
int *array;
};
void push(struct stack *s, int value) {
s->top = ++s->top;
s->array[s->top] = value;
}
int pop(struct stack *s) {
int val = s->array[s->top];
s->top = --s->top;
return val;
}
struct stack *init_stack(int count) {
struct stack *s = (struct stack *)malloc(sizeof(struct stack));
s->top = -1;
s->max_elements_in_stack = count;
s->array = (int *) malloc(sizeof(int) * count);
}
int main(int argc, char **argv) {
int max_elements_in_stack = 100;
struct stack *st = init_stack(max_elements_in_stack);
push(st, 10);
push(st, 20);
push(st, 30);
push(st, 40);
printf("popped value is %d\n", pop(st));
printf("popped value is %d\n", pop(st));
return 0;
}
The above program, implements simple stack which holds maximum 100 elements and we initialise this stack with “init_stack” and simple function “push” adds an element into stack and pop removes an element from stack [ here stack is just a simple array of integers]
We can compile the program as,
$ gcc -o simple_stack simple_stack.c
$ ./simple_stack
popped value is 40
popped value is 30