Understanding Singly and Doubly Linked Lists in Java Programming
This article explores the structure and operations of singly and doubly linked lists in Java. A singly linked list consists of nodes that store an element and a reference to the next node, with operations such as inserting and removing nodes discussed. We also delve into implementing stacks and queues using singly linked lists, highlighting their efficiency. Additionally, the more complex doubly linked list is introduced, detailing its structure which includes references to both previous and next nodes, enabling easier middle insertions and deletions.
Understanding Singly and Doubly Linked Lists in Java Programming
E N D
Presentation Transcript
Linked Lists Linked Lists
Singly Linked List (§ 4.4.1) • A singly linked list is a concrete data structure consisting of a sequence of nodes • Each node stores • element • link to the next node next node elem A B C D Linked Lists
Linked List node in Java public classListNode{ Object elem; ListNode next; public ListNode(ListNode next, Object elem) {this.next= next;this.elem= elem;} public Object getElem(){return elem; } public void setElem(Object elem){this.elem= elem;} public ListNode getNext(){return next; } public void setNext(ListNode next){this.next= next;} } Linked Lists
Allocate a new node Insert new element Have new node point to old head Update head to point to new node Inserting at the Head Linked Lists
Removing at the Head • Update head to point to next node in the list • Allow garbage collector to reclaim the former first node Linked Lists
Stack with a Singly Linked List • We can implement a stack with a singly linked list • The top element is stored at the first node of the list • The space used is O(n) and each operation of the Stack ADT takes O(1) time nodes t elements Linked Lists
Inserting at the Tail • Allocate a new node • Insert new element • Have new node point to null • Have old last node point to new node • Update tail to point to new node Linked Lists
Queue with a Singly Linked List • We can implement a queue with a singly linked list • The front element is stored at the first node • The rear element is stored at the last node • The space used is O(n) and each operation of the Queue ADT takes O(1) time r nodes f elements Linked Lists
Removing at the Tail • Removing at the tail of a singly linked list is not efficient! • There is no constant-time way to update the tail to point to the previous node Linked Lists
Doubly Linked List prev next • A doubly linked list is a more complex type of list that allows insertion in the middle • Nodes store: • element (sometimes combined into the node instead of a reference) • link to the previous node • link to the next node • Special trailer and header nodes elem node trailer nodes/positions header elements Linked Lists
Insertion p • We visualize operation insertAfter(p, X), which returns position q A B C p q A B C X p q A B X C Linked Lists
p A B C D Deletion • We visualize remove(p), where p = last() A B C p D A B C Linked Lists