- Prepare
All Platforms Programming Aptitude Syllabus Interview Preparation Interview Exp. Off Campus - Prime Video
- Prime Mock

- Interview Experience
- Prime VideoNew
- Prime Mock
- Interview Prep
- Nano Degree
- Prime Video
- Prime Mock

# Operations on a Stack

**Operations on a Stack**

There are many operations that can be used to manipulate a stack. A stack is a data structure in which the operations are executed in constant time.

There are a number of operations that can be performed on a stack, but there are two major operations that are used to manipulate a stack.

These operations are:

**Push()****Pop()**

**Push()**

- The push operation in a stack is synonymous to insertion in a data structure.
- In simpler words, inserting a new element in a stack is known as
*push*. - The time complexity of the
*Push()*operation is, i.e , it occurs in constant time.**O(1)**

Let us understand how a *push()* operation works. Let us consider we have to push a given number of elements in the stack.

The elements to be inserted are: **12 , 08 , 21 , 33 , 18 , 40.**

**Step 1:**

- Initially we have an empty stack.
**Top = NULL.**

**Step 2:**

- Push the element 12 in the stack.
**Top = 12**

**Step 3:**

- Push the element 08 in the stack.
**Top = 08.**

**Step 4:**

- Push the element 21 in the stack.
**Top = 21**

**Step 5:**

- Push the element 33 in the stack.
**Top = 33.**

**Step 6:**

- Push the element 18 in the stack.
**Top = 18**

**Step 7:**

- Push the element 40 in the stack.
**Top = 40.**

**Step 8:**

- Final stack is shown as follows.
**Top = 40**

**Pop()**

- The Pop operation in a stack is synonymous to deletion in a data structure.
- In simpler words, deleting an existing element from a stack is known as
*pop*. - The time complexity of the
*Pop()*operation is, i.e , it occurs in constant time.**O(1)**

Let us understand how a *pop()* operation works. Let us consider we have to pop a given number of elements in the stack.

The elements to be deleted from the stack are : **40 , 18 , 33.**** **

**Step 1:**

- The first element to be deleted from the stack is
**40.** - We can see the value of
*top*points to 40. - We perform the pop operation and the element 40 is popped out off the stack.
- The remaining elements are shown in the image.
**Top = 18.**

**Step 2:**

- The second element to be deleted from the stack is
**18****.** - We can see the value of
*top*points to 18. - We perform the pop operation and the element 18 is popped out off the stack.
- The remaining elements are shown in the image.
**Top = 33.**

**Step 3:**

- The next element to be deleted from the stack is 33
**.** - We can see the value of
*top*points to 33. - We perform the pop operation and the element 33 is popped out off the stack.
- The remaining elements are shown in the image.
**Top = 21.**

## Code for Stack in C Program (using structure)

Run

// C Program for Implmentation of stack (array) using structure #include <limits.h> #include <stdio.h> #include <stdlib.h> // A structure to represent a stack struct Stack { int top; int maxSize; int* array; }; struct Stack* create(int max) { struct Stack* stack = (struct Stack*)malloc(sizeof(struct Stack)); stack->maxSize = max; stack->top = -1; stack->array = (int*)malloc(stack->maxSize * sizeof(int)); //here above memory for array is being created // size would be 10*4 = 40 return stack; } // Checking with this function is stack is full or not // Will return true is stack is full else false //Stack is full when top is equal to the last index int isFull(struct Stack* stack) { if(stack->top == stack->maxSize - 1){ printf("Will not be able to push maxSize reached\n"); } // Since array starts from 0, and maxSize starts from 1 return stack->top == stack->maxSize - 1; } // By definition the Stack is empty when top is equal to -1 // Will return true if top is -1 int isEmpty(struct Stack* stack) { return stack->top == -1; } // Push function here, inserts value in stack and increments stack top by 1 void push(struct Stack* stack, int item) { if (isFull(stack)) return; stack->array[++stack->top] = item; printf("We have pushed %d to stack\n", item); } // Function to remove an item from stack. It decreases top by 1 int pop(struct Stack* stack) { if (isEmpty(stack)) return INT_MIN; return stack->array[stack->top--]; } // Function to return the top from stack without removing it int peek(struct Stack* stack) { if (isEmpty(stack)) return INT_MIN; return stack->array[stack->top]; } int main() { struct Stack* stack = create(10); push(stack, 5); push(stack, 10); push(stack, 15); int flag=1; while(flag) { if(!isEmpty(stack)) printf("We have popped %d from stack\n", pop(stack)); else printf("Can't Pop stack must be empty\n"); flag=0; } return 0; }

### Output :

We have pushed 5 to stack We have pushed 10 to stack We have pushed 15 to stack We have popped 15 from the stack Do you want to Pop again? Yes: 1 No: 0 0

Login/Signup to comment