Linkedlist implementation in Java doesnot seem like linkedlist as in C++

Viewed 1335

I was going through the LinkedList and seen the implementation in Java. Back in days when I tried and implemented the linkedlist, it was with pointers and addresses and a lot of hard work. With Java the implementation is easier but still took some doing on my part. What I know of linked list is clear from following diagram,where 1,2,3,4 are nodes of the linkedlist. enter image description here

However In java, the code I came across made me to think of the LinkedList as following diagram.enter image description here

The implementation code of linkedlist in Java is as follows,

class LinkedListNode
{
    LinkedListNode nextNode = null;//consider this member variable
    int data;
    public LinkedListNode(int data)
    {
        this.data = data;
    }
    void appendItemToLinkedList(int newData)
    {
        LinkedListNode end = new LinkedListNode(newData);
        LinkedListNode temp = this;
        while (temp.nextNode != null) { temp = temp.nextNode; }
        temp.nextNode = end;

    }
}

and

public static void main(String[] args) 
    {
        LinkedListNode list = new LinkedListNode(10);
        list.appendItemToLinkedList(20);
        list.appendItemToLinkedList(30);
        list.appendItemToLinkedList(40);
        list.appendItemToLinkedList(50);
        list.appendItemToLinkedList(60);
    }

In the diagram , you can clearly see the node objects are inside the other node objects. Is it really a linked list.Or A parent container holding other container inside it and so on?

4 Answers

Linked list in C++ above

THE MAIN DIFFERENCE IS THAT IN JAVA, THE HEAD IS NOT JUST A POINTER(without data) pointing to the first element. Even head has both data and the pointer to second element(ONLY EXCEPT THE CASE WHERE LIST IS EMPTY). In short every element in the linked list in java has 2 pointers and data, except head which has a pointer to next element and its data. I am not sure about the last element though.

Related