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:
JavaScript
x
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 :
JavaScript
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
.