Skip to content
Advertisement

java Linked List for swapping two numbers

I amgetting errors in my code. The errors are: error: class SwapNodes is public, should be declared in a file named SwapNodes.java public class SwapNodes {
^ Main.java:104: error: Illegal static declaration in inner class SwapNodes.Main public static void main(String[] args) {
^ modifier ‘static’ is only allowed in constant variable declarations My program is as follows:

public class SwapNodes {  
      
    //Represent a node of the singly linked list  
    class Node{  
        int data;  
        Node next;  
          
        public Node(int data) {  
            this.data = data;  
            this.next = null;  
        }  
    }  
   
    //Represent the head and tail of the singly linked list  
    public Node head = null;  
    public Node tail = null;  
      
    //addNode() will add a new node to the list  
    public void addNode(int data) {  
        //Create a new node  
        Node newNode = new Node(data);  
          
        //Checks if the list is empty  
        if(head == null) {  
            //If list is empty, both head and tail will point to new node  
            head = newNode;  
            tail = newNode;  
        }  
        else {  
            //newNode will be added after tail such that tail's next will point to newNode  
            tail.next = newNode;  
            //newNode will become new tail of the list  
            tail = newNode;  
        }  
    }  
      
    //swap() will swap the given two nodes  
    public void swap(int n1, int n2){  
        Node prevNode1 = null, prevNode2 = null, node1 = head, node2 = head;  
          
        //Checks if list is empty  
        if(head == null) {  
            return;  
        }  
          
        //If n1 and n2 are equal, then list will remain the same  
        if(n1 == n2)  
            return;  
          
        //Search for node1  
        while(node1 != null && node1.data != n1){  
            prevNode1 = node1;  
            node1 = node1.next;  
        }  
          
        //Search for node2  
        while(node2 != null && node2.data != n2){  
            prevNode2 = node2;  
            node2 = node2.next;  
        }  
          
        if(node1 != null && node2 != null) {  
              
            //If previous node to node1 is not null then, it will point to node2  
            if(prevNode1 != null)  
                prevNode1.next = node2;          
            else  
                head  = node2;  
              
            //If previous node to node2 is not null then, it will point to node1  
            if(prevNode2 != null)  
                prevNode2.next = node1;  
            else  
                head  = node1;  
              
            //Swaps the next nodes of node1 and node2  
            Node temp = node1.next;   
            node1.next = node2.next;   
            node2.next = temp;       
        }      
        else {  
            System.out.println("Swapping is not possible");  
        }  
    }  
      
    //display() will display all the nodes present in the list  
    public void display() {  
        //Node current will point to head  
        Node current = head;  
          
        if(head == null) {  
            System.out.println("List is empty");  
            return;  
        }  
        while(current != null) {  
            //Prints each node by incrementing pointer  
            System.out.print(current.data + " ");  
            current = current.next;  
        }  
        System.out.println();  
    }  
      
    public static void main(String[] args) {  
          
        SwapNodes sList = new SwapNodes();  
          
        //Add nodes to the list  
        sList.addNode(1);  
        sList.addNode(2);  
        sList.addNode(3);  
        sList.addNode(4);  
        sList.addNode(5);  
          
        System.out.println("Original list: ");  
        sList.display();  
          
        //Swaps the node 2 with node 5  
        sList.swap(2,5);  
          
        System.out.println("List after swapping nodes: ");  
        sList.display();  
    }  
}  

Advertisement

Answer

class SwapNodes is public, should be declared in a file named SwapNodes.java this means since the class is public, the file name must be SwapNodes instead of Main. Change the filename to SwapNodes.

Output will be :

Original list: 
1 2 3 4 5 
List after swapping nodes: 
1 5 3 4 2 

Note : Always try to name the file whatever you are giving as public class. eg : public class ClassName must be in a file ClassName.java.

User contributions licensed under: CC BY-SA
1 People found this is helpful
Advertisement