Chapter 3 Linked Lists Data Structures and Algorithms

  • Slides: 44
Download presentation
Chapter 3 Linked Lists Data Structures and Algorithms in Java

Chapter 3 Linked Lists Data Structures and Algorithms in Java

Objectives Discuss the following topics: • Singly Linked Lists • Doubly Linked Lists •

Objectives Discuss the following topics: • Singly Linked Lists • Doubly Linked Lists • Circular Lists • Skip Lists • Self-Organizing Lists • Sparse Tables • Lists in java. util • Case Study: A Library Data Structures and Algorithms in Java 2

Singly Linked Lists • A linked structure is a collection of nodes storing data

Singly Linked Lists • A linked structure is a collection of nodes storing data and links to other nodes • A linked list is a data structure composed of nodes, each node holding some information and a reference to another node in the list • A singly linked list is a node that has a link only to its successor in this sequence Data Structures and Algorithms in Java 3

Singly Linked Lists (continued) Figure 3 -1 A singly linked list Data Structures and

Singly Linked Lists (continued) Figure 3 -1 A singly linked list Data Structures and Algorithms in Java 4

Singly Linked Lists (continued) Figure 3 -1 A singly linked list (continued) Data Structures

Singly Linked Lists (continued) Figure 3 -1 A singly linked list (continued) Data Structures and Algorithms in Java 5

Singly Linked Lists (continued) public class Int. SLLNode { public int info; public Int.

Singly Linked Lists (continued) public class Int. SLLNode { public int info; public Int. SLLNode next; public Int. SLLNode(int i) { this(i, null); } public Int. SLLNode(int i, Int. SLLNode n) { info = i; next = n; } } Data Structures and Algorithms in Java 6

Singly Linked Lists (continued) Figure 3 -2 An implementation of a singly linked list

Singly Linked Lists (continued) Figure 3 -2 An implementation of a singly linked list of integers Data Structures and Algorithms in Java 7

Singly Linked Lists (continued) Figure 3 -2 An implementation of a singly linked list

Singly Linked Lists (continued) Figure 3 -2 An implementation of a singly linked list of integers (continued) Data Structures and Algorithms in Java 8

Singly Linked Lists (continued) Figure 3 -2 An implementation of a singly linked list

Singly Linked Lists (continued) Figure 3 -2 An implementation of a singly linked list of integers (continued) Data Structures and Algorithms in Java 9

Singly Linked Lists (continued) Figure 3 -2 An implementation of a singly linked list

Singly Linked Lists (continued) Figure 3 -2 An implementation of a singly linked list of integers (continued) Data Structures and Algorithms in Java 10

Singly Linked Lists (continued) Figure 3 -2 An implementation of a singly linked list

Singly Linked Lists (continued) Figure 3 -2 An implementation of a singly linked list of integers (continued) Data Structures and Algorithms in Java 11

Singly Linked Lists (continued) Figure 3 -3 A singly linked list of integers Data

Singly Linked Lists (continued) Figure 3 -3 A singly linked list of integers Data Structures and Algorithms in Java 12

Singly Linked Lists (continued) Figure 3 -4 Inserting a new node at the beginning

Singly Linked Lists (continued) Figure 3 -4 Inserting a new node at the beginning of a singly linked list Data Structures and Algorithms in Java 13

Singly Linked Lists (continued) Figure 3 -5 Inserting a new node at the end

Singly Linked Lists (continued) Figure 3 -5 Inserting a new node at the end of a singly linked list Data Structures and Algorithms in Java 14

Singly Linked Lists (continued) Figure 3 -6 Deleting a node from the beginning of

Singly Linked Lists (continued) Figure 3 -6 Deleting a node from the beginning of a singly linked list Data Structures and Algorithms in Java 15

Singly Linked Lists (continued) Figure 3 -7 Deleting a node from the end of

Singly Linked Lists (continued) Figure 3 -7 Deleting a node from the end of a singly linked list Data Structures and Algorithms in Java 16

Singly Linked Lists (continued) Figure 3 -9 Implementation of a generic singly linked list

Singly Linked Lists (continued) Figure 3 -9 Implementation of a generic singly linked list Data Structures and Algorithms in Java 17

Singly Linked Lists (continued) Figure 3 -9 Implementation of a generic singly linked list

Singly Linked Lists (continued) Figure 3 -9 Implementation of a generic singly linked list (continued) Data Structures and Algorithms in Java 18

Singly Linked Lists (continued) Figure 3 -9 Implementation of a generic singly linked list

Singly Linked Lists (continued) Figure 3 -9 Implementation of a generic singly linked list (continued) Data Structures and Algorithms in Java 19

Singly Linked Lists (continued) Figure 3 -9 Implementation of a generic singly linked list

Singly Linked Lists (continued) Figure 3 -9 Implementation of a generic singly linked list (continued) Data Structures and Algorithms in Java 20

Doubly Linked Lists • A doubly linked list is when each node in a

Doubly Linked Lists • A doubly linked list is when each node in a linked list has two reference fields, one to the successor and one to the predecessor Figure 3 -10 A doubly linked list Data Structures and Algorithms in Java 21

Doubly Linked Lists (continued) Figure 3 -11 An implementation of a doubly linked list

Doubly Linked Lists (continued) Figure 3 -11 An implementation of a doubly linked list Data Structures and Algorithms in Java 22

Doubly Linked Lists (continued) Figure 3 -11 An implementation of a doubly linked list

Doubly Linked Lists (continued) Figure 3 -11 An implementation of a doubly linked list (continued) Data Structures and Algorithms in Java 23

Doubly Linked Lists (continued) Figure 3 -11 An implementation of a doubly linked list

Doubly Linked Lists (continued) Figure 3 -11 An implementation of a doubly linked list (continued) Data Structures and Algorithms in Java 24

Doubly Linked Lists (continued) Figure 3 -12 Adding a new node at the end

Doubly Linked Lists (continued) Figure 3 -12 Adding a new node at the end of a doubly linked list Data Structures and Algorithms in Java 25

Doubly Linked Lists (continued) Figure 3 -12 Adding a new node at the end

Doubly Linked Lists (continued) Figure 3 -12 Adding a new node at the end of a doubly linked list (continued) Data Structures and Algorithms in Java 26

Doubly Linked Lists (continued) Figure 3 -13 Deleting a node from the end of

Doubly Linked Lists (continued) Figure 3 -13 Deleting a node from the end of a doubly linked list Data Structures and Algorithms in Java 27

Circular Lists • A circular list is when nodes form a ring: The list

Circular Lists • A circular list is when nodes form a ring: The list is finite and each node has a successor Figure 3 -14 A circular singly linked list Data Structures and Algorithms in Java 28

Circular Lists (continued) Figure 3 -15 Inserting nodes at the front of a circular

Circular Lists (continued) Figure 3 -15 Inserting nodes at the front of a circular singly linked list (a) and at its end (b) Data Structures and Algorithms in Java 29

Circular Lists (continued) Figure 3 -16 A circular doubly linked list Data Structures and

Circular Lists (continued) Figure 3 -16 A circular doubly linked list Data Structures and Algorithms in Java 30

Skip Lists • A skip list is a variant of the ordered linked list

Skip Lists • A skip list is a variant of the ordered linked list that makes a nonsequential search possible • In a skip list of n nodes, for each k and i such that 1 ≤ k ≤ [lg n] and 1 ≤ i ≤ [n/2 k– 1] – 1, the node in position 2 k– 1 · i points to the node in position 2 k – 1 · (i + 1) • The number of reference fields indicates the level of each node, and the number of levels is max. Level= [lg n] + 1 Data Structures and Algorithms in Java 31

Skip Lists (continued) Figure 3 -17 A skip list with (a) evenly and (b)

Skip Lists (continued) Figure 3 -17 A skip list with (a) evenly and (b) unevenly spaced nodes of different levels Data Structures and Algorithms in Java 32

Skip Lists (continued) Figure 3 -17 (c) the skip list with reference nodes clearly

Skip Lists (continued) Figure 3 -17 (c) the skip list with reference nodes clearly shown (continued) Data Structures and Algorithms in Java 33

Skip Lists (continued) Figure 3 -18 An implementation of a skip list Data Structures

Skip Lists (continued) Figure 3 -18 An implementation of a skip list Data Structures and Algorithms in Java 34

Skip Lists (continued) Figure 3 -18 An implementation of a skip list (continued) Data

Skip Lists (continued) Figure 3 -18 An implementation of a skip list (continued) Data Structures and Algorithms in Java 35

Skip Lists (continued) Figure 3 -18 An implementation of a skip list (continued) Data

Skip Lists (continued) Figure 3 -18 An implementation of a skip list (continued) Data Structures and Algorithms in Java 36

Skip Lists (continued) Figure 3 -18 An implementation of a skip list (continued) Data

Skip Lists (continued) Figure 3 -18 An implementation of a skip list (continued) Data Structures and Algorithms in Java 37

Skip Lists (continued) Figure 3 -18 An implementation of a skip list (continued) Data

Skip Lists (continued) Figure 3 -18 An implementation of a skip list (continued) Data Structures and Algorithms in Java 38

Skip Lists (continued) Figure 3 -18 An implementation of a skip list (continued) Data

Skip Lists (continued) Figure 3 -18 An implementation of a skip list (continued) Data Structures and Algorithms in Java 39

Skip Lists (continued) Figure 3 -18 An implementation of a skip list (continued) Data

Skip Lists (continued) Figure 3 -18 An implementation of a skip list (continued) Data Structures and Algorithms in Java 40

Self-Organizing Lists There are four methods for organizing lists: • Move-to-front method – after

Self-Organizing Lists There are four methods for organizing lists: • Move-to-front method – after the desired element is located, put it at the beginning of the list (Figure 3. 19 a) • Transpose method – after the desired element is located, swap it with its predecessor unless it is at the head of the list (Figure 3. 19 b) • Count method – order the list by the number of times elements are being accessed (Figure 3. 19 c) Data Structures and Algorithms in Java 41

Self-Organizing Lists (continued) • Ordering method – order the list using certain criteria natural

Self-Organizing Lists (continued) • Ordering method – order the list using certain criteria natural for the information under scrutiny (Figure 3. 19 d) • Optimal static ordering all the data are already ordered by the frequency of their occurrence in the body of data so that the list is used only for searching, not for inserting new items Data Structures and Algorithms in Java 42

Self-Organizing Lists (continued) Figure 3 -20 Processing the stream of data, A C B

Self-Organizing Lists (continued) Figure 3 -20 Processing the stream of data, A C B C D A C A C C E E, by different methods of organizing linked lists Data Structures and Algorithms in Java 43

Self-Organizing Lists (continued) Figure 3 -21 Measuring the efficiency of different methods using formula

Self-Organizing Lists (continued) Figure 3 -21 Measuring the efficiency of different methods using formula (number of data comparisons)/(combined length) expressed in percentages Data Structures and Algorithms in Java 44