I need a driver file for my java code I have already written
I need a driver file for my java code I have already written that demonstrates each of the methods(goToNext, goToPrev, getDataAtCurrent, setDataAtCurrent, insertNodeAfterCurrent, deleteCurrentNode, showList, inList) is working with a double linked list of integers and strings. Please let the answer be typed and NOT a picture of unreadable handwritten code.....
I will provide the java code now:
//GenDoubleLinkedList class
public class GenDoubleLinkedList
{
class ListNode
{
T data;
ListNode nextLink,prevLink;
public ListNode()
{
data=null;
this.nextLink=null;
this.prevLink=null;
}
public ListNode(T data,ListNode next,ListNode prev)
{
this.data=data;
this.nextLink=next;
this.prevLink=prev;
}
}
ListNode head,current;
public GenDoubleLinkedList()
{
this.head=new ListNode();
this.current=this.head;
}
public void goToNext()
{
if(this.current.nextLink!=null)
{
this.current=this.current.nextLink;
}
}
public void goToPrev()
{
if(this.current.prevLink!=null)
{
this.current=this.current.prevLink;
}
}
public T getDataAtCurrent()
{
T result = null;
if(this.current.data!=null)result =this.current.data;
return result;
}
public void setDataAtCurrent(T data)
{
this.current.data=data;
}
public void insertNodeAfterCurrent(T data)
{
ListNode n=new ListNode(data,this.current.nextLink,this.current);
if(this.current!=null)
{
n.nextLink=this.current.nextLink;
this.current.nextLink=n;
}
}
public void deleteCurrentNode()
{
this.current.prevLink.nextLink=this.current.nextLink;
this.current=this.current.nextLink;
}
public void showList()
{
ListNode copy=this.head;
while(copy!=null)
{
System.out.println(copy.data);
copy=copy.nextLink;
}
}
public boolean inList(T data)
{
ListNode copy=this.head;
while(copy!=null)
{
if(copy.data==data)return true;
copy=copy.nextLink;
}
return false;
}
}
Solution
// program to implement doubly linked list
 import java.util.Scanner;
public class DoubleLinkedList{
   
    static ListNode head = null;
   
    public static void main(String[] args){
       
        DoubleLinkedList list = new DoubleLinkedList();      
        Scanner in = new Scanner(System.in);
        int n, item;
       
        while(true){
            System.out.println();
            System.out.println(\"1. Insert an item to list \");
            System.out.println(\"2. Delete an item from list \");
            System.out.println(\"3. Display items of list \");
            System.out.println(\"4. Reverse the list \");
            System.out.println(\"5. Exit \");
            System.out.print(\"Enter your choice: \");
            n=in.nextInt();
            switch(n){
                case 1:
                    System.out.print(\"Enter the item to be inserted: \");
                    item=in.nextInt();
                    head=list.insert(head, item);
                    break;
                case 2:
                    System.out.print(\"Enter the item to be deleted: \");
                    item=in.nextInt();
                    head=list.delete(head, item);
                    break;
                case 3:
                    if(head==null)
                        System.out.println(\"List is empty. \");
                    else
                        list.display(head);
                    break;
                case 4:
                    head = list.reverse(head);
                    break;
                case 5:
                    System.exit(0);
                default:
                    System.out.println(\"Wrong choice selected. \");
                   
                       
            }
        }
    }
   
    public ListNode insert(ListNode head, int item){
        if(head==null){
            head = new ListNode(item);
            return head;
        }
        ListNode temp = new ListNode(item);
        ListNode ptr = head;
        while(ptr.next!=null)
            ptr=ptr.next;
       
        ptr.next= temp;
        temp.prev = ptr;      
        return head;
    }
   
    public ListNode delete(ListNode head, int item){
       
        if(head == null){
            System.out.println(\"List is empty. \");
            return head;
        }
        if(head.next==null){
            if(head.data==item){
                head=null;
                return head;
            }
            else{
                System.out.println(\"Item \" + item + \" not present in list. \");
                return head;
            }
        }
        if(head.data == item){
            head=head.next;
            head.prev=null;
            return head;
        }
       
        ListNode current = head.next;
        while(current.next != null){
            if(current.data==item){
                current.prev.next = current.next;
                current.next.prev = current.prev;
                return head;
            }
            current = current.next;
        }
       
        if(current.data == item){
            current.prev.next=null;
            return head;
        }
       
        System.out.println(\"Item \" + item + \" not present in list. \");
        return head;
    }
   
    public void display(ListNode head){
        if(head==null)
            return;
        System.out.print(head.data + \" \");
        display(head.next);
    }
   
   
    //iterative reverse of list
    public ListNode reverse(ListNode head){
       
        if(head == null){
            System.out.println(\"List is empty. \");
            return head;
        }
       
        ListNode temp, ptr;
        temp = head;
        ptr = temp.next;
        temp.next = null;
        temp.prev = ptr;
       
        while(ptr != null){
            ptr.prev = ptr.next;
            ptr.next = temp;
            temp = ptr;
            ptr = ptr.prev;
        }
        head = temp;
        System.out.println(\"List is reversed. \");
        return head;
    }
   
   
 }
 class ListNode{
    int data;
    ListNode next;
    ListNode prev;
   
    public ListNode(int val){
        data=val;
        next=null;
        prev=null;
    }
 }






