Quick actions

cmd+k|ctrl+k

Navigation

Languages

LinkedList

Snippet info

Language

Java

Visibility

public

Author

mudaganisushanth

Created

2023-03-03T04:17:38.557784Z

Updated

2023-03-05T06:40:42.186208Z

class LinkedList{
    int length;
    Node head;
    Node tail;
    
    class Node
    {
        int value;
        Node next;
        
        Node(int value)
        {
            this.value = value;
        }
    }
    public LinkedList(int value)
    {
        Node NewNode = new Node(value);
        head = NewNode;
        tail = NewNode;
        length = 1;
    }
    
    public void printList()
    {
        Node temp = head;
        while(temp!= null)
        {
            System.out.println(temp.value);
            temp=temp.next;
        }
    }
    public void append(int value)
    {
        Node NewNode = new Node(value);
        if(length == 0)
        {
            head = NewNode;
            tail = NewNode;
        }
        else
        {
            tail.next = NewNode;
            tail = NewNode;
        }
        length++;
    }
    public Node RemoveLast()
    {
        if(length == 0)
        {
            return null;
        }
        else
        {
            Node temp=head;
            Node pre=head;
            while(temp.next!= null)
            {
                pre = temp;
                temp = temp.next;
            }
            tail = pre;
            tail.next = null;
            length--;
            if(length==0)
            {
                head = null;
                tail = null;
            }
            return temp;
        }
    }
    public void prepend(int value)
    {
        Node NewNode = new Node(value);
        if(length == 0)
        {
            head = NewNode;
            tail = NewNode;
        }
        else
        {
            NewNode.next = head;
            head = NewNode;
        }
        length++;
    }
    
    public Node RemoveFirst()
    {
        
        if(length == 0)
        {
            return null;
        }
        else
        {
            Node temp=head;
            head = head.next;
            temp.next = null;
            length--;
            if(length == 0)
            {
                head = null;
                tail = null;
            }
            return temp;
        }
        
    }
    
    public Node get(int index)
    {
        if(index < 0 || index >= length)
        {
            return null;
        }
        else
        {
        Node temp = head;
        for(int i=0;i<index;i++)
        {
            temp = temp.next;
        }
        return temp;
        }
    }
    
    public boolean set(int index, int value)
    {
        Node temp = get(index);
        if(temp!=null)
        {
            temp.value = value;
            return true;
        }
        else
        {
            return false;
        }
    }
    
    public boolean insert(int index,int value)
    {
        if(index == 0)
        {
            prepend(value);
            return true;
        }
        else if(index == length)
        {
            append(value);
            return true;
        }
        else
        {
            Node NewNode = new Node(value);
            Node temp = get(index-1);
            NewNode.next = temp.next;
            temp.next = NewNode;
            length++;
            return true;
        }
    }
    
    public Node Remove(int index)
    {
        if(index>=length || index<0)
        {
            return null;
        }
        else if(index == 0)
        {
            return RemoveFirst();
        }
        else if(index == length-1)
        {
            return RemoveLast();
        }
        else
        {
            Node prev = get(index-1);
            Node temp=prev.next;
            
            prev.next = temp.next;
            temp.next = null;
            length--;
            return temp;
        }
    }
}

class Main {
    public static void main(String[] args) {
        LinkedList myLinkedList = new LinkedList(1);
        myLinkedList.append(2);
        myLinkedList.append(3);
        myLinkedList.append(4);
        myLinkedList.prepend(6);
        myLinkedList.printList();
        System.out.println("List after inserting");
        myLinkedList.insert(2,9);
        myLinkedList.printList();
        System.out.println("List after removing");
        System.out.println(myLinkedList.Remove(3).value);
        myLinkedList.printList();
        // System.out.println("Index :"+myLinkedList.get(2).value);
        // System.out.println("RemoveFirst: "+myLinkedList.RemoveFirst().value);
        // System.out.println("RemoveLast: "+myLinkedList.RemoveLast().value);
        // myLinkedList.printList();
        // System.out.println("Linked List After Set operation");
        // myLinkedList.set(1,7);
        // myLinkedList.printList();
        
        
    }
}
INFO