/*
This is an example of generic programming for double queue where an element of any datatype can be inserted either from front or back but can be deleted only from front.
*/
import java.util.*;
class Dqueue<E>{
private Object[] lst ;
private int rear = -1 ;
private int front = 0 ;
private int size = 10;
public Dqueue(int size){
this.size = size;
lst = new Object[size];
}
public boolean isFull(){
if((rear == (size - 1)))
return true;
else return false;
}
public boolean isEmpty(){
if(rear == -1)
return true;
else return false;
}
public void insertFront(E ele){
if(!isFull()){
for(int i = rear ; i >= front ; i--){
lst[i+1] = lst[i];
}
lst[front] = ele;
rear++;
System.out.println ("Element Added from Front :" + ele + " at Pos :" + front);
}
else{
System.out.println ("Overflow");
}
}
public void insertRear(E ele){
if(!isFull()){
rear++;
lst[rear] = ele;
System.out.println ("Element Added from Rear :" + ele + " at Pos :" + rear);
}
else{
System.out.println ("OverFlow");
}
}
public void delete(){
if(!isEmpty()){
System.out.println ("Element Deleted :" + lst[front] + "pos :" + front);
for(int i = front ; i < rear ; i++){
lst[i] = lst[i+1];
}
rear--;
}
else{
System.out.println ("UnderFlow");
}
}
public void printQueue(){
for(int i = front ; i <= rear ; i++){
System.out.println ("Element at pos[" + i + "] is :" + lst[i]);
// System.out.print (lst[i] + "\n");
}
System.out.println ();
}
public void peekFront(){
System.out.println ("Element at first position is :" + lst[front]);
System.out.println ();
}
public void peekRear(){
System.out.println ("Element at last position is :" + lst[rear]);
System.out.println ();
}
public static void main (String[] args) {
System.out.println ("Enter the size of the queue");
int a = (new Scanner(System.in)).nextInt() ;
//Integer
Dqueue<Integer> dq = new Dqueue<Integer>(a);
System.out.println ("Integer Deque");
dq.insertRear(1);
dq.insertRear(2);
dq.delete();
dq.delete();
dq.delete();
dq.insertRear(1);
dq.insertRear(1);
dq.insertFront(5);
dq.printQueue();
//Double
Dqueue<Double> fdq = new Dqueue<Double>(a);
System.out.println ("Double Deque");
fdq.insertFront(1.0);
fdq.insertFront(2.0);
fdq.delete();
fdq.insertRear(7.0);
fdq.insertFront(8.0);
fdq.delete();
fdq.printQueue();
//String
Dqueue<String> sdq = new Dqueue<String>(a);
System.out.println ("String Deque");
sdq.insertFront("Hello");
sdq.insertFront("Friends");
sdq.delete();
sdq.delete();
sdq.insertRear("!!!");
sdq.printQueue();
sdq.peekFront();
sdq.peekRear();
}
}
This is an example of generic programming for double queue where an element of any datatype can be inserted either from front or back but can be deleted only from front.
*/
class Dqueue<E>{
private Object[] lst ;
private int rear = -1 ;
private int front = 0 ;
private int size = 10;
public Dqueue(int size){
this.size = size;
lst = new Object[size];
}
public boolean isFull(){
if((rear == (size - 1)))
return true;
else return false;
}
public boolean isEmpty(){
if(rear == -1)
return true;
else return false;
}
public void insertFront(E ele){
if(!isFull()){
for(int i = rear ; i >= front ; i--){
lst[i+1] = lst[i];
}
lst[front] = ele;
rear++;
System.out.println ("Element Added from Front :" + ele + " at Pos :" + front);
}
else{
System.out.println ("Overflow");
}
}
public void insertRear(E ele){
if(!isFull()){
rear++;
lst[rear] = ele;
System.out.println ("Element Added from Rear :" + ele + " at Pos :" + rear);
}
else{
System.out.println ("OverFlow");
}
}
public void delete(){
if(!isEmpty()){
System.out.println ("Element Deleted :" + lst[front] + "pos :" + front);
for(int i = front ; i < rear ; i++){
lst[i] = lst[i+1];
}
rear--;
}
else{
System.out.println ("UnderFlow");
}
}
public void printQueue(){
for(int i = front ; i <= rear ; i++){
System.out.println ("Element at pos[" + i + "] is :" + lst[i]);
// System.out.print (lst[i] + "\n");
}
System.out.println ();
}
public void peekFront(){
System.out.println ("Element at first position is :" + lst[front]);
System.out.println ();
}
public void peekRear(){
System.out.println ("Element at last position is :" + lst[rear]);
System.out.println ();
}
public static void main (String[] args) {
System.out.println ("Enter the size of the queue");
int a = (new Scanner(System.in)).nextInt() ;
//Integer
Dqueue<Integer> dq = new Dqueue<Integer>(a);
System.out.println ("Integer Deque");
dq.insertRear(1);
dq.insertRear(2);
dq.delete();
dq.delete();
dq.delete();
dq.insertRear(1);
dq.insertRear(1);
dq.insertFront(5);
dq.printQueue();
//Double
Dqueue<Double> fdq = new Dqueue<Double>(a);
System.out.println ("Double Deque");
fdq.insertFront(1.0);
fdq.insertFront(2.0);
fdq.delete();
fdq.insertRear(7.0);
fdq.insertFront(8.0);
fdq.delete();
fdq.printQueue();
//String
Dqueue<String> sdq = new Dqueue<String>(a);
System.out.println ("String Deque");
sdq.insertFront("Hello");
sdq.insertFront("Friends");
sdq.delete();
sdq.delete();
sdq.insertRear("!!!");
sdq.printQueue();
sdq.peekFront();
sdq.peekRear();
}
}
No comments:
Post a Comment