LABSHEET 5:
(Q.1)
(i)
class MyQueue{
private static final int size = 5;
private int front = -1;
private int rear = -1;
private int[] items = new int[size];
public boolean isEmpty(){
return front == -1;
}
public boolean isFull(){
return rear == size-1;
}
public void enqueue(int value){
if (isFull()){
System.out.println("Queue is full");
return;
}
if (isEmpty()){
front = 0;
}
rear++;
items[rear] = value;
System.out.println("Enqueued:" + value);
}
public int dequeue(){
if (isEmpty()){
System.out.println("Queue is empty");
return -1;
}
int temp = items[front];
if (front == rear){
front = -1;
rear = -1;
}
else{
front++;
}
System.out.println("Dequeued:" + temp);
return temp;
}
public void display(){
if (isEmpty()){
System.out.println("Queue is empty");
return;
}
System.out.print("Queue: ");
for (int i = front; i <= rear; i++){
System.out.print(items[i] + " ");
}
System.out.println();
}
}
(ii)
class MyQueueDriver{
public static void main(String[] args){
MyQueue queue = new MyQueue();
System.out.println("Enqueue Operations: ");
queue.enqueue(10);
queue.enqueue(20);
System.out.println("\nQueue after enqueuing elements: ");
queue.display();
System.out.println("\nDequeue Operations:");
queue.dequeue();
System.out.println("\nQueue after dequeue:");
queue.display();
}
}
OUTPUT:
(iii)
class MyQueueDriver {
public static void main(String[] args) {
MyQueue queue = new MyQueue();
System.out.println("Enqueue Operations: ");
queue.enqueue(10);
queue.enqueue(20);
queue.enqueue(30);
queue.enqueue(40);
queue.enqueue(50);
System.out.println("\nQueue after enqueuing elements: ");
queue.display();
System.out.println("\nDequeue Operations:");
queue.dequeue();
System.out.println("\nQueue after dequeue:");
queue.display();
System.out.println("\nTrying enqueue again:");
queue.enqueue(60);
}
}
OUTPUT:
(Q2.)
import java.util.Stack;
class Reverse {
public static void ReverseQ(MyQueue queue) {
if (queue.isEmpty()) {
System.out.println("Queue is Empty. Cannot be reversed.");
return;
}
Stack<Integer> stack = new Stack<Integer>();
while (!queue.isEmpty()) {
stack.push(queue.dequeue());
}
while (!stack.isEmpty()) {
queue.enqueue(stack.pop());
}
System.out.println("Queue has been reversed.");
}
}
public class ReverseQueue {
public static void main(String[] args) {
MyQueue queue = new MyQueue();
queue.enqueue(0);
queue.enqueue(12);
queue.enqueue(8);
queue.enqueue(5);
System.out.println("Original Queue:");
queue.display();
Reverse.ReverseQ(queue);
System.out.println("\nReversed Queue:");
queue.display();
}
OUTPUT:
(Q3.)
public class MyNewStack {
private MyQueue queue1;
private MyQueue queue2;
public MyNewStack() {
queue1 = new MyQueue();
queue2 = new MyQueue();
}
public void push(int value) {
queue2.enqueue(value);
while (!queue1.isEmpty()) {
queue2.enqueue(queue1.dequeue());
}
MyQueue temp = queue1;
queue1 = queue2;
queue2 = temp;
}
public int pop() {
if (queue1.isEmpty()) {
System.out.println("Stack is empty, cannot pop! :D");
return -1;
}
return queue1.dequeue();
}
public int peek() {
if (queue1.isEmpty()) {
System.out.println("Stack is empty, cannot peek. •᷄ɞ•");
return -1;
}
return queue1.dequeue();
}
public void display() {
System.out.println("Current Stack:");
queue1.display();
}
}
class MynewStackDriver {
public static void main(String[] args) {
MyNewStack stack = new MyNewStack();
stack.push(10);
stack.push(20);
stack.push(30);
stack.push(40);
stack.push(50);
stack.display();
System.out.println("Top element (peek): " + stack.peek());
System.out.println("Popped: " + stack.pop());
System.out.println("Popped: " + stack.pop());
stack.display();
}
}
(Q4.)
class MyCQueue {
private static final int SIZE = 5;
private int[] items = new int[SIZE];
private int front = -1;
private int rear = -1;
public boolean isEmpty() {
return front == -1;
}
public boolean isFull() {
return (rear + 1) % SIZE == front;
}
public void enqueue(int value) {
if (isFull()) {
System.out.println("Queue is full! Cannot enqueue " + value
+ ".");
return;
}
if (isEmpty()) {
front = 0;
}
rear = (rear + 1) % SIZE;
items[rear] = value;
System.out.println("Enqueued: " + value);
}
public int dequeue() {
if (isEmpty()) {
System.out.println("Queue is empty! Cannot dequeue.");
return -1;
}
int value = items[front];
if (front == rear) {
front = -1;
rear = -1;
} else {
front = (front + 1) % SIZE;
}
System.out.println("Dequeued: " + value);
return value;
}
public void display() {
if (isEmpty()) {
System.out.println("Queue is empty.");
return;
}
System.out.print("Queue elements: ");
int i = front;
while (true) {
System.out.print(items[i] + " ");
if (i == rear)
break;
i = (i + 1) % SIZE;
}
System.out.println();
}
}
class MyCQueueDriver {
public static void main(String[] args) {
MyCQueue cqueue = new MyCQueue();
System.out.println("Enqueue Operations:");
cqueue.enqueue(10);
cqueue.enqueue(20);
cqueue.enqueue(30);
cqueue.enqueue(40);
cqueue.enqueue(50);
System.out.println("\nCircular Queue after enqueuing
elements:");
cqueue.display();
System.out.println("\nAttempting to enqueue into a full
queue:");
cqueue.enqueue(60);
System.out.println("\nDequeue Operations:");
cqueue.dequeue();
cqueue.dequeue();
System.out.println("\nCircular Queue after dequeuing
elements:");
cqueue.display();
System.out.println("\nEnqueueing after dequeuing:");
cqueue.enqueue(60);
cqueue.enqueue(70);
System.out.println("\nFinal state of the Circular Queue:");
cqueue.display();
}
}
OUTPUT:
(Q5.)
import java.util.Scanner;
import java.util.Stack;
public class PalindromeChecker {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Enter a string to check if it's a
palindrome:");
String input = scanner.nextLine();
Stack<Character> stack = new Stack<>();
Queue queue = new Queue();
input = input.toUpperCase();
for (int i = 0; i < input.length(); i++) {
char ch = input.charAt(i);
if (Character.isLetterOrDigit(ch)) {
stack.push(ch);
queue.enqueue(ch);
}
}
boolean isPalindrome = true;
while (!queue.isEmpty()) {
char fromQueue = queue.dequeue();
char fromStack = stack.pop();
if (fromQueue != fromStack) {
isPalindrome = false;
break;
}
}
if (isPalindrome) {
System.out.println("The string \"" + input + "\" is a
palindrome.");
} else {
System.out.println("The string \"" + input + "\" is NOT a
palindrome.");
}
scanner.close();
}
}
OUTPUT: