Question

In: Computer Science

Assume that a singly linked list is implemented with a header node, but no tail node,...

Assume that a singly linked list is implemented with a header node, but no tail node, and that it maintains only a pointer to the header node. Write a class that includes methods to
a. return the size of the linked list
b. print the linked list
c. test if a value x is contained in the linked list
d. add a value x if it is not already contained in the linked list
e. remove a value x if it is contained in the linked list

Solutions

Expert Solution

All the methods are testes using switch case

Source Code

import java.util.*;
public class SinglyLinkedList {    
    class Node{    
        int data;    
        Node next;    
            
        public Node(int data) {    
            this.data = data;    
            this.next = null;    
        }    
    }    
     
    public Node head = null;    
   
    public int size() {       
        Node current = head;    
        int c=0;
        if(head == null) {    
                
            return 0;    
        }    
           
        while(current != null) {     
            c++;  
            current = current.next;    
        }    
        return c;  
    }    
    public void print() {    
        Node current = head;    
        if(head == null) {    
            System.out.println("List is empty");    
            return;    
        }    
           
        System.out.println("Nodes of singly linked list: ");    
        while(current != null) {    
            System.out.print(current.data + " ");    
            current = current.next;    
        }    
        System.out.println();    
    }    
    public int test(int x) {       
        Node current = head;    
        int f=0;
        
            while(current != null) {      
                if(current.data==x)
                    f=1;
                current = current.next;    
            }    
        
        return f;
    } 
    public void addtest(int x) {    
            Node newNode = new Node(x); 
            if(test(x)==0)
            {
                if(head==null)
                {
                    
                    head = newNode;
                    
                }
                
                Node last = head;  
                while (last.next != null) 
                    last = last.next; 
                last.next = newNode; 
                newNode.next=null;
            }
            else
            {
                System.out.println("Already present");
            }
    } 
    public void deleteNode(int key)
    {
        Node temp = head, prev = null;
        if (temp != null && temp.data == key)
        {
            head = temp.next;
            return;
        }
        while (temp != null && temp.data != key)
        {
            prev = temp;
            temp = temp.next;
        }    
        if (temp == null) 
            return;
        prev.next = temp.next;
    }
    public static void main() {    
            
        SinglyLinkedList sl = new SinglyLinkedList();    
        Scanner sc=new Scanner(System.in);   
        while(true)
        {
            System.out.println("Enter 1 to return size of linked list\nEnter 2 to print the linked list\nEnter 3 to test if value x is contained in linked list\nEnter 4 to add a value x if it is not already contained in linked list\nEnter 5 to remove a value x if it is contained in the list");
            System.out.println("Enter 0 to exit");
            System.out.println("Enter your choice");
            int ch=sc.nextInt();
            switch(ch)
            {
             case 0:System.exit(0);
             case 1:System.out.println(sl.size());break;
             case 2:sl.print();break;
             case 3:System.out.println("Enter value to test");
                    int x=sc.nextInt();
                    int f=sl.test(x);
                    if(f==1)
                       System.out.println("Value "+ x +" is contained in the linked list");
                    else
                        System.out.println("Value is not contained in the linked list");
                    break;
             case 4:System.out.println("Enter value to add");
                    int a=sc.nextInt();
                    sl.addtest(a);break;
             case 5:System.out.println("Enter value to remove");
                    int b=sc.nextInt();
                    sl.deleteNode(b);break;
             default:System.out.println("Wrong Input");break;
            }
        }
    }    
}    

Output

Enter 1 to return size of linked list
Enter 2 to print the linked list
Enter 3 to test if value x is contained in linked list
Enter 4 to add a value x if it is not already contained in linked list
Enter 5 to remove a value x if it is contained in the list
Enter 0 to exit
Enter your choice
1
0
Enter 1 to return size of linked list
Enter 2 to print the linked list
Enter 3 to test if value x is contained in linked list
Enter 4 to add a value x if it is not already contained in linked list
Enter 5 to remove a value x if it is contained in the list
Enter 0 to exit
Enter your choice
2
List is empty
Enter 1 to return size of linked list
Enter 2 to print the linked list
Enter 3 to test if value x is contained in linked list
Enter 4 to add a value x if it is not already contained in linked list
Enter 5 to remove a value x if it is contained in the list
Enter 0 to exit
Enter your choice
4
Enter value to add
1
Enter 1 to return size of linked list
Enter 2 to print the linked list
Enter 3 to test if value x is contained in linked list
Enter 4 to add a value x if it is not already contained in linked list
Enter 5 to remove a value x if it is contained in the list
Enter 0 to exit
Enter your choice
1
1
Enter 1 to return size of linked list
Enter 2 to print the linked list
Enter 3 to test if value x is contained in linked list
Enter 4 to add a value x if it is not already contained in linked list
Enter 5 to remove a value x if it is contained in the list
Enter 0 to exit
Enter your choice
2
Nodes of singly linked list: 
1 
Enter 1 to return size of linked list
Enter 2 to print the linked list
Enter 3 to test if value x is contained in linked list
Enter 4 to add a value x if it is not already contained in linked list
Enter 5 to remove a value x if it is contained in the list
Enter 0 to exit
Enter your choice
4
Enter value to add
2
Enter 1 to return size of linked list
Enter 2 to print the linked list
Enter 3 to test if value x is contained in linked list
Enter 4 to add a value x if it is not already contained in linked list
Enter 5 to remove a value x if it is contained in the list
Enter 0 to exit
Enter your choice
2
Nodes of singly linked list: 
1 2 
Enter 1 to return size of linked list
Enter 2 to print the linked list
Enter 3 to test if value x is contained in linked list
Enter 4 to add a value x if it is not already contained in linked list
Enter 5 to remove a value x if it is contained in the list
Enter 0 to exit
Enter your choice
1
2
Enter 1 to return size of linked list
Enter 2 to print the linked list
Enter 3 to test if value x is contained in linked list
Enter 4 to add a value x if it is not already contained in linked list
Enter 5 to remove a value x if it is contained in the list
Enter 0 to exit
Enter your choice
3
Enter value to test
1
Value 1 is contained in the linked list
Enter 1 to return size of linked list
Enter 2 to print the linked list
Enter 3 to test if value x is contained in linked list
Enter 4 to add a value x if it is not already contained in linked list
Enter 5 to remove a value x if it is contained in the list
Enter 0 to exit
Enter your choice
3
Enter value to test
3
Value is not contained in the linked list
Enter 1 to return size of linked list
Enter 2 to print the linked list
Enter 3 to test if value x is contained in linked list
Enter 4 to add a value x if it is not already contained in linked list
Enter 5 to remove a value x if it is contained in the list
Enter 0 to exit
Enter your choice
3
Enter value to test
2
Value 2 is contained in the linked list
Enter 1 to return size of linked list
Enter 2 to print the linked list
Enter 3 to test if value x is contained in linked list
Enter 4 to add a value x if it is not already contained in linked list
Enter 5 to remove a value x if it is contained in the list
Enter 0 to exit
Enter your choice
5
Enter value to remove
2
Enter 1 to return size of linked list
Enter 2 to print the linked list
Enter 3 to test if value x is contained in linked list
Enter 4 to add a value x if it is not already contained in linked list
Enter 5 to remove a value x if it is contained in the list
Enter 0 to exit
Enter your choice
2
Nodes of singly linked list: 
1 
Enter 1 to return size of linked list
Enter 2 to print the linked list
Enter 3 to test if value x is contained in linked list
Enter 4 to add a value x if it is not already contained in linked list
Enter 5 to remove a value x if it is contained in the list
Enter 0 to exit
Enter your choice
1
1
Enter 1 to return size of linked list
Enter 2 to print the linked list
Enter 3 to test if value x is contained in linked list
Enter 4 to add a value x if it is not already contained in linked list
Enter 5 to remove a value x if it is contained in the list
Enter 0 to exit
Enter your choice
0

Related Solutions

Assume that a singly linked list is implemented with a header node, but no tail node,...
Assume that a singly linked list is implemented with a header node, but no tail node, and that it maintains only a pointer to the header node. Write a class in C++ that includes methods to a. return the size of the linked list b. print the linked list c. test if a value x is contained in the linked list d. add a value x if it is not already contained in the linked list e. remove a value...
I've provided a Node class that implements a node of a simple singly-linked list (with .value...
I've provided a Node class that implements a node of a simple singly-linked list (with .value and .next fields), and an empty LinkedList class. Your task is to implement LinkedList.sort(l), where given the node l as the head of a singly-linked list, LinkedList.sort(l) sorts the nodes in the list into ascending order according to the values in the .value field of each node. Your implementation should do an in-place update of the list. It is ok to use a simple...
Python class DLLNode: """ Class representing a node in the doubly linked list implemented below. """...
Python class DLLNode: """ Class representing a node in the doubly linked list implemented below. """ def __init__(self, value, next=None, prev=None): """ Constructor @attribute value: the value to give this node @attribute next: the next node for this node @attribute prev: the previous node for this node """ self.__next = next self.__prev = prev self.__value = value def __repr__(self): return str(self.__value) def __str__(self): return str(self.__value) def get_value(self): """ Getter for value :return: the value of the node """ return self.__value...
I was supposed to conver a singly linked list to a doubly linked list and everytime...
I was supposed to conver a singly linked list to a doubly linked list and everytime I run my program the output prints a bunch of random numbers constantly until I close the console. Here is the code. #include <stdio.h> #include <stdlib.h> #include <string.h> #include <stdbool.h> struct node { int data; struct node *next; struct node *prev; }; //this always points to first link struct node *head = NULL; //this always points to last link struct node *tail = NULL;...
Java program to implement circular linked list. public class CircularLinkedList { private Node tail; private int...
Java program to implement circular linked list. public class CircularLinkedList { private Node tail; private int size; public CircularLinkedList() { tail= null; size = 0; } public int size(){ return size; } public boolean isEmpty() { return size==0; } //if list is not empty return the first element public E first() { if (isEmpty()) return null; //code here return 0; } //if list not empty return last element public E last() { if (isEmpty()) return null; return tail.getElement(); } /*...
In C++, Implement the queue ADT with a singly linked list
In C++, Implement the queue ADT with a singly linked list
Exercise 1: Write a program in Java to manipulate a Singly Linked List: 1. Create Singly...
Exercise 1: Write a program in Java to manipulate a Singly Linked List: 1. Create Singly Linked List 2. Display the list 3. Count the number of nodes 4. Insert a new node at the beginning of a Singly Linked List. 5. Insert a new node at the end of a Singly Linked List 6. Insert a new node after the value 5 of Singly Linked List 7. Delete the node with value 6. 8. Search an existing element in...
Data Structures on Java Basic Linked List exercises a. Suppose x is a linked-list node and...
Data Structures on Java Basic Linked List exercises a. Suppose x is a linked-list node and not the last node on the list. What is the effect of the following code fragment? x.next = x.next.next b. Singly Linked List has two private instance variables first and last as that point to the first and the last nodes in the list, respectively. Write a fragment of code that removes the last node in a linked list whose first node is first....
Write PSEUDOCODE to insert a node at position 2 in a doubly-linked list (assume position follows...
Write PSEUDOCODE to insert a node at position 2 in a doubly-linked list (assume position follows classic indexing from 0 to item_count - 1)
The file supplied.o contains code that can build, display, and destroy a linear linked list (singly-linked)....
The file supplied.o contains code that can build, display, and destroy a linear linked list (singly-linked). For this lab, you will need to write the following two functions in list.cpp, and add function prototypes for them to list.h. The provided main.cpp has calls to each of these functions commented out. As you write the functions, uncomment them from main.cpp. void reverse(node * head, node *& newHead) Recursively make a revserse copy of the source list with head where newhead is...
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT