You are on page 1of 6

EX1:

public class Node {


int data;
Node next;

public Node(int data) {


this.data = data;
this.next = null;
}

}
-------------------------
public class Queue {
private Node head;

public Queue() {
this.head = null;
}

public void enqueue(int data) {


Node newNode = new Node(data);

if (head == null) {
head = newNode;
} else {
Node temp = head;
while (temp.next != null) {
temp = temp.next;
}
temp.next = newNode;
}
}

public int dequeue() {


if (head == null)
return -1;

int data = head.data;


head = head.next;
return data;
}

public void display() {


Node temp = head;
while (temp != null) {
System.out.print(temp.data + " ");
temp = temp.next;
}
System.out.println();
}

public Queue getPerfectSquares() {


Queue perfectSquaresQueue = new Queue();
Node temp = head;

while (temp != null) {


int num = temp.data;
double sqrt = Math.sqrt(num);
if (sqrt == (int) sqrt) {
perfectSquaresQueue.enqueue(num);
}

temp = temp.next;
}

return perfectSquaresQueue;
}

public Queue deleteEveryThirdElement() {


Queue resultQueue = new Queue();
Node temp = head;
int count = 1;

while (temp != null) {


if (count % 3 != 0) {
resultQueue.enqueue(temp.data);
}

temp = temp.next;
count++;
}

return resultQueue;
}

public Queue merge2Queues(Queue q2) {


Queue mergedQueue = new Queue();
Node temp = head;

while (temp != null) {


mergedQueue.enqueue(temp.data);
temp = temp.next;
}

temp = q2.head;

while (temp != null) {


mergedQueue.enqueue(temp.data);
temp = temp.next;
}

return mergedQueue;
}

public void swapElementsAtOddIndex(Queue q2) {


Node temp1 = head;
Node temp2 = q2.head;
int index = 1;

while (temp1 != null && temp2 != null) {


if (index % 2 != 0) {
int tempData = temp1.data;
temp1.data = temp2.data;
temp2.data = tempData;
}
temp1 = temp1.next;
temp2 = temp2.next;
index++;
}
}

}
-----------------------
public static void main(String[] args) {
// TODO code application logic here

Queue queue1 = new Queue();


Queue queue2 = new Queue();

for (int i = 2; i <= 9; i++) {


queue1.enqueue(i);
}
queue1.enqueue(36);

System.out.print("The first queue: ");


queue1.display();

Queue perfectSquaresQueue = queue1.getPerfectSquares();


System.out.print("Perfect squares in the queue: ");
perfectSquaresQueue.display();

Queue afterDeleteQueue = queue1.deleteEveryThirdElement();


System.out.print("Queue after deleting every third element: ");
afterDeleteQueue.display();

for (int i = 20; i <= 60; i += 10) {


queue2.enqueue(i);
}

System.out.print("The second queue: ");


queue2.display();

Queue mergedQueue = queue1.merge2Queues(queue2);


System.out.print("After merging the two queues: ");
mergedQueue.display();

queue1.swapElementsAtOddIndex(queue2);
System.out.println("After swapping elements at odd indexes:");
System.out.print("First queue: ");
queue1.display();
System.out.print("Second queue: ");
queue2.display();
}

EX2:

public class Node {


int data;
int priority;
Node next;
public Node(int data, int priority) {
this.data = data;
this.priority = priority;
this.next = null;
}
}
--------------------
class PriorityQueue {
private Node head;

public PriorityQueue() {
this.head = null;
}

public void enqueue(int data, int priority) {


Node newNode = new Node(data, priority);

if (head == null || priority > head.priority) {


newNode.next = head;
head = newNode;
} else {
Node temp = head;
while (temp.next != null && temp.next.priority >= priority) {
temp = temp.next;
}
newNode.next = temp.next;
temp.next = newNode;
}
}

public int dequeue() {


if (head == null)
return -1;

int data = head.data;


head = head.next;
return data;
}

public void removeElement(int a) {


if (head == null)
return;

if (head.data == a) {
head = head.next;
return;
}

Node temp = head;


while (temp.next != null && temp.next.data != a) {
temp = temp.next;
}

if (temp.next != null) {
temp.next = temp.next.next;
}
}
public void reverseQueue() {
if (head == null || head.next == null)
return;

Node prev = null;


Node current = head;
Node nextNode;

while (current != null) {


nextNode = current.next;
current.next = prev;
prev = current;
current = nextNode;
}

head = prev;
}

public int maxElement() {


if (head == null)
return -1;

return head.data;
}

public void display() {


Node temp = head;
while (temp != null) {
System.out.print(temp.data + "(" + temp.priority + ") ");
temp = temp.next;
}
System.out.println();
}
}
----------------------
public static void main(String[] args) {
// TODO code application logic here

PriorityQueue priorityQueue = new PriorityQueue();

priorityQueue.enqueue(5, 2);
priorityQueue.enqueue(10, 1);
priorityQueue.enqueue(7, 3);
priorityQueue.enqueue(3, 2);

System.out.print("Priority Queue: ");


priorityQueue.display();

int dequeued = priorityQueue.dequeue();


System.out.println("Dequeued element: " + dequeued);
System.out.print("Priority Queue after dequeue: ");
priorityQueue.display();

priorityQueue.removeElement(10);
System.out.print("Priority Queue after removing element 10: ");
priorityQueue.display();

priorityQueue.reverseQueue();
System.out.print("Reversed Priority Queue: ");
priorityQueue.display();

int maxElement = priorityQueue.maxElement();


System.out.println("Max Element in Priority Queue: " + maxElement);
}

You might also like