C Exercises: Push and pop for both stacks using a single array
Write a C program to implement two stacks in a single array and performs push and pop operations for both stacks.
Sample Solution:
C Code:
#include <stdio.h>
#define MAX_SIZE 100
// Global stack and top variables for two stacks
int stack[MAX_SIZE];
int top1 = -1; // Top of stack 1
int top2 = MAX_SIZE; // Top of stack 2
// Function to push an element onto stack 1
void push1(int data) {
if (top1 == top2 - 1) {
printf("Overflow stack!\n");
return;
}
top1++;
stack[top1] = data;
}
// Function to pop an element from stack 1
int pop1() {
if (top1 == -1) {
printf("Empty Stack!\n");
return -1;
}
int data = stack[top1];
top1--;
return data;
}
// Function to push an element onto stack 2
void push2(int data) {
if (top2 == top1 + 1) {
printf("Overflow stack!\n");
return;
}
top2--;
stack[top2] = data;
}
// Function to pop an element from stack 2
int pop2() {
if (top2 == MAX_SIZE) {
printf("Empty Stack!\n");
return -1;
}
int data = stack[top2];
top2++;
return data;
}
// Main function
int main() {
// Input data in stack-1
push1(10);
push1(30);
push1(40);
push1(50);
// Input data in stack-2
push2(20);
push2(40);
push2(50);
push2(60);
push2(70);
// Print elements in stack-1
printf("Elements in Stack-1 are: ");
while (top1 != -1) {
printf("%d ", pop1());
}
printf("\n");
// Print elements in stack-2
printf("Elements in Stack-2 are: ");
while (top2 != MAX_SIZE) {
printf("%d ", pop2());
}
printf("\n");
return 0;
}
Sample Output:
Elements in Stack-1 are: 50 40 30 10 Elements in Stack-2 are: 70 60 50 40 20
Flowchart:
C Programming Code Editor:
Have another way to solve this solution? Contribute your code (and comments) through Disqus.
Previous: Check a stack us full or not.
Next: Sort a stack using another stack.
What is the difficulty level of this exercise?
Test your Programming skills with w3resource's quiz.
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics