Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

A deque (pronounced deck) is a list-based collection that allows additions and r

ID: 3566074 • Letter: A

Question

A deque (pronounced deck) is a list-based collection that allows additions and removals to take place at both ends. A deque supports the operations addFront(x), removeFront( ), addRear(x), removeRear( ), size( ), and empty( ).

? Write a class that implements a deque that stores strings using a doubly-linked list that you code yourself.

? Demonstrate your class with a graphical user interface that allows users to manipulate the deque by typing appropriate commands in a JTextField component, and see the current state of the deque displayed in a JTextArea component.

? Consult the documentation for the JTextArea class for methods you can use to display each item in the deque on its own line.

these are the classes when its completed: use these names please

Node.java
DoubleEndedQueue.java
DoubleEndedQueuueDemo.java ( GUI)

Explanation / Answer

import java.io.*;  

class Node  

{  

public int data;  

public Node next;  

public Node previous;  

public Node(int x)  

{  

  data=x;  

}  

public void displayNode()  

{  

  System.out.print(data+"  ");  

}  

}  

class DoublyLinkList  

{  

private Node first;  

private Node last;  

public DoublyLinkList()  

{  

  first=null;  

  last=null;  

}  

public void insertFirst(int x)  

{  

  Node newNode=new Node(x);  

  newNode.next=null;  

  if(isEmpty())  

   last=newNode;  

  else  

   first.previous=newNode;  

  newNode.next=first;  

  first=newNode;  

}  

public void insertLast(int x)  

{  

  Node newNode=new Node(x);  

  newNode.next=null;  

  if(isEmpty())  

   first=newNode;  

  else  

  {  

   last.next=newNode;  

   newNode.previous=last;  

  }  

  last=newNode;  

}  

public int deleteFirst()  

{  

  int t=first.data;  

  if(first.next==null)  

   last=null;  

  else  

   first.next.previous=null;  

  first=first.next;  

  return t;  

}  

public int deleteLast()  

{  

  int t=last.data;  

  if(first.next==null)  

   first=null;  

  else  

   last.previous.next=null;  

  last=last.previous;  

  return t;  

}  

public boolean isEmpty()  

{  

  return(first==null);  

}  

public void displayForward()  

{  

  Node current=first;  

  while(current!=null)  

  {  

   current.displayNode();  

   current=current.next;  

  }  

}  

public void displayBackward()  

{  

  Node current=last;  

  while(current!=null)  

  {  

   current.displayNode();  

   current=current.previous;  

  }  

}  

}  

class Deque  

{  

private DoublyLinkList l;  

public Deque()  

{  

  l=new DoublyLinkList();  

}  

public void insertLeft(int x)  

{  

  l.insertFirst(x);  

  System.out.print("Inserted to Front ");  

}  

public void insertRight(int x)  

{  

  l.insertLast(x);  

  System.out.print("Inserted to Rear ");  

}  

public int deleteLeft()  

{  

  return l.deleteFirst();  

}  

public int deleteRight()  

{  

  return l.deleteLast();  

}  

public boolean isQueueEmpty()  

{  

  return l.isEmpty();  

}  

public void displayFromFront()  

{  

  l.displayForward();  

}  

public void displayFromRear()  

{  

  l.displayBackward();  

}  

}  

class DequeApp  

{  

public static void main(String args[])throws IOException  

{  

  String ch="y";  

  DataInputStream inp=new DataInputStream(System.in);  

  int n,d;  

  Deque q=new Deque();  

  while(ch.equals("y"))  

  {  

   System.out.println("MENU");  

   System.out.println("--------");  

   System.out.println("1.Insert at Front");  

   System.out.println("2.Insert at Rear");  

   System.out.println("3.Delete at Front");  

   System.out.println("4.Delete at Rear");  

   System.out.println("5.Display From Front");  

   System.out.println("6.Display From Rear");  

   System.out.println("Enter your choice ");  

   n=Integer.parseInt(inp.readLine());  

   switch(n)  

   {  

    case 1: System.out.println("Enter the data ");  

      d=Integer.parseInt(inp.readLine());  

      q.insertLeft(d);  

      break;  

    case 2: System.out.println("Enter the data ");  

      d=Integer.parseInt(inp.readLine());  

      q.insertRight(d);  

      break;  

    case 3: if(q.isQueueEmpty())  

       System.out.print("Deque is Empty ");  

      else  

      {  

       d=q.deleteLeft();  

       System.out.print("Deleted data:-  "+d);  

      }  

      break;  

    case 4: if(q.isQueueEmpty())  

       System.out.print("Deque is Empty ");  

      else  

      {  

       d=q.deleteRight();  

       System.out.print("Deleted data:-  "+d);  

      }  

      break;  

    case 5: if(q.isQueueEmpty())  

       System.out.print("Deque is Empty ");  

      else  

      {  

       System.out.print("Datas in Deque From Front:- ");  

       q.displayFromFront();  

      }  

      break;  

    case 6: if(q.isQueueEmpty())  

       System.out.print("Deque is Empty ");  

      else  

      {  

       System.out.print("Datas in Deque From Rear:- ");  

       q.displayFromRear();  

      }  

      break;  

    default: System.out.print("Invalid choice ");  

   }    

   System.out.println("");  

   System.out.print("Enter y to continue ");  

   ch=inp.readLine();  

  }  

}  

}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote