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

java Write a menu driven interactive program for manipulating a single linked li

ID: 3815139 • Letter: J

Question

java

Write a menu driven interactive program for manipulating a single linked list of numbers. The program should give the user the following options:
1. Insert a number at the beginning of a list
2. Insert a number at the end of a list
3. Display the length of the list
4. Search the list for a specific number(for membership)
5. Delete a node containing a specific number from the list
6. Print the list

7. exit

You should create a project, named Project9 and the project should contain the LinkedList class as well as a class named Program9 containing the main method for this application. You must declare the Node Class as a private inner class of the LinkedList class.

Explanation / Answer

import java.util.Scanner;

/* Class Node */

class Node

{

protected int data;

protected Node link;

/* Constructor */

public Node()

{

link = null;

data = 0;

}

/* Constructor */

public Node(int d,Node n)

{

data = d;

link = n;

}

/* Function to set link to next Node */

public void setLink(Node n)

{

link = n;

}

/* Function to set data to current Node */

public void setData(int d)

{

data = d;

}

/* Function to get link to next node */

public Node getLink()

{

return link;

}

/* Function to get data from current Node */

public int getData()

{

return data;

}

}

/* Class linkedList */

class linkedList

{

protected Node start;

protected Node end ;

public int size ;

/* Constructor */

public linkedList()

{

start = null;

end = null;

size = 0;

}

/* Function to check if list is empty */

public boolean isEmpty()

{

return start == null;

}

/* Function to get size of list */

public int getSize()

{

return size;

}

/* Function to insert an element at begining */

public void insertAtStart(int val)

{

Node nptr = new Node(val, null);

size++ ;

if(start == null)

{

start = nptr;

end = start;

}

else

{

nptr.setLink(start);

start = nptr;

}

}

/* Function to insert an element at end */

public void insertAtEnd(int val)

{

Node nptr = new Node(val,null);

size++ ;

if(start == null)

{

start = nptr;

end = start;

}

else

{

end.setLink(nptr);

end = nptr;

}

}

/* Function to insert an element at position */

public void insertAtPos(int val , int pos)

{

Node nptr = new Node(val, null);

Node ptr = start;

pos = pos - 1 ;

for (int i = 1; i < size; i++)

{

if (i == pos)

{

Node tmp = ptr.getLink() ;

ptr.setLink(nptr);

nptr.setLink(tmp);

break;

}

ptr = ptr.getLink();

}

size++ ;

}

/* Function to delete an element at position */

public void deleteAtPos(int pos)

{

if (pos == 1)

{

start = start.getLink();

size--;

return ;

}

if (pos == size)

{

Node s = start;

Node t = start;

while (s != end)

{

t = s;

s = s.getLink();

}

end = t;

end.setLink(null);

size --;

return;

}

Node ptr = start;

pos = pos - 1 ;

for (int i = 1; i < size - 1; i++)

{

if (i == pos)

{

Node tmp = ptr.getLink();

tmp = tmp.getLink();

ptr.setLink(tmp);

break;

}

ptr = ptr.getLink();

}

size-- ;

}

/* Function to display elements */

public void display()

{

System.out.print(" Singly Linked List = ");

if (size == 0)

{

System.out.print("empty ");

return;

}

if (start.getLink() == null)

{

System.out.println(start.getData() );

return;

}

Node ptr = start;

System.out.print(start.getData()+ "->");

ptr = start.getLink();

while (ptr.getLink() != null)

{

System.out.print(ptr.getData()+ "->");

ptr = ptr.getLink();

}

System.out.print(ptr.getData()+ " ");

}

}

/* Class SinglyLinkedList */

public class SinglyLinkedList

{

public static void main(String[] args)

{   

Scanner scan = new Scanner(System.in);

/* Creating object of class linkedList */

linkedList list = new linkedList();

System.out.println("Singly Linked List Test ");

char ch;

/* Perform list operations */

do

{

System.out.println(" Singly Linked List Operations ");

System.out.println("1. insert at begining");

System.out.println("2. insert at end");

System.out.println("3. insert at position");

System.out.println("4. delete at position");

System.out.println("5. search for element");

System.out.println("6. get size");

int choice = scan.nextInt();

switch (choice)

{

case 1 :

System.out.println("Enter integer element to insert");

list.insertAtStart( scan.nextInt() );   

break;

case 2 :

System.out.println("Enter integer element to insert");

list.insertAtEnd( scan.nextInt() );   

break;   

case 3 :

System.out.println("Enter integer element to insert");

int num = scan.nextInt() ;

System.out.println("Enter position");

int pos = scan.nextInt() ;

if (pos <= 1 || pos > list.getSize() )

System.out.println("Invalid position ");

else

list.insertAtPos(num, pos);

break;

case 4 :

System.out.println("Enter position");

int p = scan.nextInt() ;

if (p < 1 || p > list.getSize() )

System.out.println("Invalid position ");

else

list.deleteAtPos(p);

break;

case 5 :
              
               System.out.println("Enter integer element to insert");
              
if(list.contains(scan.nextInt()){
               System.out.println("Number exist in the list");
               }
               else{
               System.out.println("Number does not exist in the list");
               }

break;   

case 6 :

System.out.println("Size = "+ list.getSize() +" ");

break;   

default :

System.out.println("Wrong Entry ");

break;   

}

/* Display List */

list.display();

System.out.println(" Do you want to continue (Type y or n) ");

ch = scan.next().charAt(0);

} while (ch == 'Y'|| ch == 'y');   

}

}