DEV Community

Cover image for Singly LinkedList implementation in JAVA
Karhik Suryadevara
Karhik Suryadevara

Posted on

Singly LinkedList implementation in JAVA

What is a linked list

1) each element in a linked list is called a node.
2) It is similar to an array, each node in the linked list has the data part and a link to the next node.
3) linked lists have O(1) time complexity for insertion or deletion at the beginning i.e at position 0.

How to implement

-> Java has builtin LinkedList which you can import from the utility library
-> or you can implement your own LinkedList

Built-in LinkedList

        LinkedList<String> x = new LinkedList<String>();
//        to add elements to the list
        x.add("1"); // here the first element we added becomes the head
        x.add("2");
        x.add("3");
        x.add("4");
        x.add("5");
        x.remove("5");

//      to traverse the linked list
        Iterator<String> i = x.iterator();
        while(i.hasNext()){
            System.out.print(i.next()+"->");
        }
Enter fullscreen mode Exit fullscreen mode

implementing a LinkedList, my approach:

// LL stands for LinkedList
public class LL {
    public Node head;

    public LL() {
        head = null;
    }

    public LL(int data) {
        head = new Node(data);
    }

    public void add(int data) {
        if (head != null) {
            head.appendToTail(data);
        } else {
            head = new Node(data);
        }
    }

    public void printList() {
        Node dummy = head;
        while (dummy != null) {
            System.out.print(dummy.data + "->");
            dummy = dummy.next;
        }
        System.out.print("null");
    }

    public void delete(int d) {
        Node newHead = new Node(0);
        newHead.next = head;
        Node previous = newHead;
        Node current = head;

        while (current != null) {
            if (current.data == d) {
                previous.next = current.next;
            } else {
                previous = current;
            }
            current = current.next;
        }

        head = newHead.next;

    }

    public class Node {
        Node next = null;
        int data;

        public Node(int data) {
            this.data = data;
        }

        void appendToTail(int d) {

            Node end = new Node(d);
            Node n = head;
            while (n.next != null) {
                n = n.next;
            }
            n.next = end;

        }
    }
}
Enter fullscreen mode Exit fullscreen mode

Try out these challenges on LinkedList to get a good grasp

Top comments (0)