Real Interview - 1. Insert after 3rd node in linked list, 2. Implement queue using array
Given a linked list
given a element. Insert after 3rd node in the list.
Example 1:
Input: 4 1 2 3 4 35 Output: 1->2->3->35->4->
Approach -
import java.util.*;
import java.lang.*;
import java.io.*;
class Node {
int val;
Node next;
Node() {}
Node(int val) {
this.val = val;
this.next = null;
}
}
class Codechef {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] elements = new int[n];
Node prev = new Node(sc.nextInt());
Node head = prev;
for(int i=1; i<n-1; i++) {
Node curr = new Node(sc.nextInt());
prev.next = curr;
prev = prev.next;
}
Node curr = new Node(sc.nextInt());
prev.next = curr;
prev = prev.next;
prev.next = null;
// display
Node temp = head;
while(temp!=null) {
System.out.print(temp.val+"->");
temp = temp.next;
}
System.out.println();
// insert after 3rd node
temp = head;
int count = 0;
while(temp!=null && count++<2) {
temp = temp.next;
}
Node node = new Node(sc.nextInt());
Node store = temp.next;
temp.next = node;
node.next = store;
// after insert
temp = head;
while(temp!=null) {
System.out.print(temp.val+"->");
temp = temp.next;
}
}
}
------------------X--------------------
Queue using array
Given a nothing
Implement queue using array
Example 1:
Input: 4
1
1
1
2
1
3
1
4
3
2
2
3
5
4
Output: 1. Enqueue
2. Dequeue
3. Print
4. Exit
Value inserted
1. Enqueue
2. Dequeue
3. Print
4. Exit
Value inserted
1. Enqueue
2. Dequeue
3. Print
4. Exit
Value inserted
1. Enqueue
2. Dequeue
3. Print
4. Exit
Value inserted
1. Enqueue
2. Dequeue
3. Print
4. Exit
1
2
3
4
1. Enqueue
2. Dequeue
3. Print
4. Exit
Deleted -> 1
1. Enqueue
2. Dequeue
3. Print
4. Exit
Deleted -> 2
1. Enqueue
2. Dequeue
3. Print
4. Exit
3
4
1. Enqueue
2. Dequeue
3. Print
4. Exit
Wrong Input
1. Enqueue
2. Dequeue
3. Print
4. Exit
Approach -
import java.util.*;
import java.lang.*;
import java.io.*;
class Codechef {
static int front = 0;
static int rear = -1;
static int size = 0;
static int[] queue = new int[101];
public static void insertAtRear(int val) {
if(rear>=size-1) {
System.out.println("Queue is full");
}
else {
rear++;
queue[rear] = val;
System.out.println("Value inserted");
}
}
public static int deleteFromFront() {
if(front>rear) {
System.out.println("Queue is empty");
}
else {
int deleted = queue[front];
front++;
return deleted;
}
return 0;
}
public static void printQueue() {
if(front<=rear && rear<size)
for(int i=front; i<=rear; i++) {
System.out.println(queue[i]);
}
else
System.out.println("NO PRINT");
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
size = n;
while(true) {
System.out.println("\n1. Enqueue \n2. Dequeue \n3. Print \n4. Exit\n");
int choice = sc.nextInt();
switch(choice) {
case 1: insertAtRear(sc.nextInt()); break;
case 2: int deleted = deleteFromFront(); System.out.println("Deleted -> "+deleted); break;
case 3: printQueue(); break;
case 4: System.exit(1);
case 5: System.out.println("Wrong Input");
}
}
}
}
------------------X--------------------
No comments