import java.util.*;
interface StackInterface
{
boolean isEmptyStack();
boolean isFullStack();
void push(int data);
int pop();
int peek();
void display_stack();
int m = 20;
int[] stack = new int[m];
}
interface QueueInterface
{
boolean isEmptyQueue();
boolean isFullQueue();
void enqueue(int data);
int dequeue();
void display_queue();
int n = 20;
int[] queue = new int[n];
}
class StackQueue implements StackInterface,QueueInterface
{
int top;
int front;
int rear;
Scanner sc = new Scanner(System.in);
public StackQueue() {
this.top = -1;
this.front = -1;
this.rear = -1;
}
public boolean isEmptyStack()
{
if(top == -1)
{
return true;
}
else
{
return false;
}
}
public boolean isFullStack()
{
if(top == m-1)
{
return true;
}
else
{
return false;
}
}
public void push(int data)
{
if(isFullStack())
{
System.out.println("Stack Overflow....!!");
}
else
{
top++;
stack[top] = data;
}
}
public int pop()
{
int popped_element = 0;
if(isEmptyStack())
{
System.out.println("Stack is Empty,You cannot perform pop...!!");
return -1;
}
else
{
popped_element = stack[top];
top--;
}
return popped_element;
}
@Override
public int peek()
{
if(isEmptyStack())
{
System.out.println("Stack is Empty..!! (top = -1)");
return -1;
}
else {
return stack[top];
}
}
public void display_stack()
{
if(isEmptyStack())
{
System.out.println("Stack is Empty..!!");
}
else {
for (int i = top; i >= 0; i--) {
System.out.println(stack[i]);
}
}
System.out.println();
}
public boolean isEmptyQueue()
{
if((front == -1 && rear == -1) || front > rear)
{
return true;
}
else
{
return false;
}
}
public boolean isFullQueue()
{
if(rear == n - 1)
{
return true;
}
else
{
return false;
}
}
@Override
public void enqueue(int data)
{
if (front == -1 && rear == -1) {
front = 0;
rear++;
queue[rear] = data;
} else if (rear != -1) {
++rear;
queue[rear] = data;
} else {
System.out.println("Queue is full..!!");
}
}
@Override
public int dequeue()
{
if (isEmptyQueue())
{
System.out.println("Queue is Empty ,Nothing to Dequeue");
return -1;
}
else if (front == rear)
{
int data = queue[front];
front = -1;
rear = -1;
return data;
}
else
{
int data = queue[front];
front++;
return data;
}
}
@Override
public void display_queue() {
if (isEmptyQueue())
{
System.out.println("Queue is Empty ,Nothing to Dequeue");
}
else{
for(int i = front;i {
System.out.println("Enter element to add in Stack : ");
int stack_data = sc.nextInt();
obj.push(stack_data);
}
case 2 -> {
int stack_element = obj.pop();
System.out.println("Popped element is : "+stack_element);
System.out.println();
}
case 3 -> {
int peek = obj.peek();
System.out.println("Peek of the stack is : "+peek);
System.out.println();
}
case 4 -> {
obj.display_stack();
}
case 5 -> {
System.out.println("Enter element to add in queue : ");
int queue_data = sc.nextInt();
obj.enqueue(queue_data);
}
case 6 -> {
int queue_element = obj.dequeue();
System.out.println("Dequeued element is : "+queue_element);
System.out.println();
}
case 7 -> {
obj.display_queue();
}
case 8 -> {
flag = false;
}
default -> System.out.println("Enter the valid choice...!!!!");
}
}
}
}