javadoubly-linked-listinsertioncircular-list

How to insert strings into a linked list in java


I am writing a program to add String type data to a circular doubly linked list and to view them in java. I want to know that how to add Strings to the linked list and how to get the output.

The way I tried gives an error: " The constructor Node() is undefined " How to fix this.

here is the code I tried:

class Node {
    int data;
    Node nextNode;
    Node prevNode;
}

class CircularDoublyLL {
    Node head = null;
    Node tail = null;

    public void insertLast(String songName) {
        Node newNode = new Node();
        newNode.data = songName;

        if (head == null) {
            head = tail = newNode;
            head.nextNode = head;
            head.prevNode = head;
        } else {
            tail.nextNode = newNode;
            newNode.prevNode = tail;
            newNode.nextNode = head;
            head.prevNode = newNode;
            tail = newNode;
        }
    }

    public void displayPlayist() {
        Node currentNode = head;
        if (head == null) {
            System.out.println("Playlist is empty!");
        } else {
            int songNo = 1;
            while (currentNode != tail) {
                System.out.println("Song " + songNo + ": " + currentNode.data);
                currentNode = currentNode.nextNode;
                songNo++;
            }
            System.out.println("Song " + songNo + ": " + currentNode.data);
        }
    }
}

public class MusicPlayer {
    public static void main(String[] args) {
        CircularDoublyLL playlist = new CircularDoublyLL();

        playlist.insertLast("Song Name 1");
        playlist.insertLast("Song Name 2");
        playlist.insertLast("Song Name 3");
        playlist.insertLast("Song Name 4");
        playlist.displayPlayist();
    }
}

Solution

  • For Strings change:

    class Node {
        int data;
        Node nextNode;
        Node prevNode;
    }
    

    To

    class Node {
        String data;
        Node nextNode;
        Node prevNode;
    }
    

    or

    class Node {
        Object data;
        Node nextNode;
        Node prevNode;
    }
    

    (Object will allow any data type)