Download presentation
Presentation is loading. Please wait.
Published byCecilia Henry Modified over 9 years ago
1
1 Linked Structures, LinkedSet References as Links Linear Linked Lists and Non-linear Structures Managing Linked Lists Data Encapsulation Separate from Linking Doubly Linked Lists Reading: L&C : 4.1-4.3
2
2 References as Links A linked structure is a data structure that uses object reference variables to create links between objects Declaring an object reference variable Object obj = new Object(); A diagram of an object reference variable obj Object reference variableAn object of Object class
3
3 References as Links A self-referential Person class that contains a pointer to another Person class object public class Person { // attributes of a “person” private String name; private String address; // link (or pointer) to another Person object private Person next; // next Person in list
4
4 References as Links A self-referential Person class that contains a pointer to another Person class object // constructor, accessor, and mutator methods public Person(...) // parameters are attributes { // set the attributes next = null; } public Person(Person next,...) { this.next = next; } public void setNext(Person next) { this.next = next; } public Person getNext() { return next; }
5
5 Linked Lists A null terminated linked list of Person objects can be used to represent people waiting in line starting at the “front” Beginning of a linked list of Person objects private Person front; A diagram of a linked list Person next; null front Person next;
6
6 Linked Lists Unlike an array which has a fixed size, a linked list is considered to be a dynamic structure The amount of memory used grows and shrinks as objects are added to the list or deleted from the list The Java compiler and virtual machine allocate memory for each individual object as it is created (via the new operator) and free memory as each object is garbage collected
7
7 Linear/Non-Linear Linked Structures A linked list is considered to be a linear structure since it can be visualized as a line Some linked structures are non-linear, e.g. entry
8
8 Managing Singly Linked Lists The order in which references are changed is crucial to maintaining a linked list Can insert a new Person in three places: –at the front –In the middle –at the end Can delete an existing Person in three places: –At the front –In the middle –at the end
9
9 Inserting Objects in a Linked List Create new Person object and link at front Person newPerson = new Person(...); newPerson.setNext(front); front = newPerson; newPerson = null; newPerson front Person next; 2 3 1 4
10
10 Inserting Objects in a Linked List Create new Person object and link after the current Person object (current could be at end) Person newPerson = new Person(...); newPerson.setNext(current.getNext()); current.setNext(newPerson); newPerson = null; newPerson front Person next; 2 3 1 4 current
11
11 Inserting Objects in a Linked List How about inserting an element at the end? Let's do it together.
12
12 Removing Objects from a Linked List Remove Person object at front Person removed = front; front = front.getNext()); removed.setNext(null); removed front Person next; 2 3 1
13
13 Removing Objects from a Linked List Remove Person object after current Person object (removed object could be at end) Person removed = current.getNext(); current.setNext(removed.getNext()); removed.setNext(null); front Person next; 2 3 1 currentremoved
14
14 Removing Objects from a Linked List How about removing an object from the end?
15
15 Elements without Links It is desirable to have a generic link class that can be used to link any type of objects of any class encapsulating the “real” data Class LinearNode does that this way Object of type T front LinearNode next; T element; Object of type T LinearNode next; T element; null Object of type T LinearNode next; T element;
16
16 Elements without Links Code for Linear Node public class LinearNode { private LinearNode next; private T element; public LinearNode() // create an empty node { next = null; element = null; }
17
17 Elements without Links Code for LinearNode public LinearNode(T element) { next = null; this.element = element; } public LinearNode getNext() { return next; } public void setNext(LinearNode next) { this.next = next; }
18
18 Elements without Links Code for LinearNode public T getElement() { return element; } public void setElement(T element) { this.element = element; } }// end class LinearNode
19
19 Elements without Links Using the LinearNode class to create a linked list of three Person objects int size = 3; LinearNode front = new LinearNode (); LinearNode current = front; for(int i = 1; i < 3; i++) { LinearNode newNode = new LinearNode (); current.setNext(newNode); current = newNode; }
20
20 Doubly Linked Lists Each DoubleNode object has a reference to next DoubleNode and previous DoubleNode public class DoubleNode { private DoubleNode next; private DoubleNode prev; private T element; Object of type T frontDoubleNode next DoubleNode prev T element Object of type T null back DoubleNode next DoubleNode prev T element
21
21 Doubly Linked Lists To Add a DoubleNode object to the list, your code must set both the DoubleNode next and prev variables. To delete a DoubleNode object from the list, your code must bypass the DoubleNode links in both directions.
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.