Linked Lists - PowerPoint PPT Presentation

About This Presentation
Title:

Linked Lists

Description:

Linked Lists many s taken from Mike Scott, UT Austin Recursive Data Structures Linked Lists are dynamic data structures They grow and shrink one element at a ... – PowerPoint PPT presentation

Number of Views:163
Avg rating:3.0/5.0
Slides: 22
Provided by: MikeS140
Learn more at: http://www.cs.ucr.edu
Category:
Tags: linked | list | lists

less

Transcript and Presenter's Notes

Title: Linked Lists


1
Linked Lists
  • many slides taken from Mike Scott, UT Austin

2
Recursive Data Structures
  • Linked Lists are dynamic data structures
  • They grow and shrink one element at a time,
    normally without some of the inefficiencies of
    arrays
  • Big O of Array Manipulations
  • Access the kth element
  • Add or delete an element in the middle of the
    array while maintaining relative order
  • adding element at the end of array? space avail?
    no space avail?
  • add element at beginning of an array
  • If accesses are all at beginning or end of list,
    a linked structure offers improvements
  • Linked Lists could be used as the underlying
    storage container for higher level ADTs (stack,
    queue)

3
Nodes and Lists
  • A different way of implementing a list
  • Each element of a Linked List is a separate Node
    object.
  • Each Node tracks a single piece of data plus a
    reference (pointer) to the next
  • Create a new Node every time we add something to
    the List
  • Remove nodes when item removed from list and
    allow garbage collector to reclaim that memory

4
Elements of Linked Lists
public class Node private Object
myData private Node myNext public
Node() myData null myNext
null public Node(Object data, Node
next) myData data myNext next
public Object getData() return
myData public Node getNext() return
myNext public void setData(Object
data) myData data public void
setNext(Node next) myNext next
5
One Implementation of a Linked List
  • The Nodes shown on the previous slide are singly
    linked
  • a node refers only to the next node in the
    structure
  • it is also possible to have doubly linked nodes.
  • The node has a reference to the next node in the
    structure and the previous node in the structure
    as well
  • How is the end of the list indicated
  • myNext null for last node
  • a separate dummy node class / object

6
A Simple List Interface
public interface IList void add(Object
item) void add(Object item, int
pos) Object set(Object item, int
pos) void add(List other) Object get(int
pos) Object remove(int pos) int
size()
7
A Linked List Implementation
public class LinkedList implements
Ilist private Node myHead private Node
myTail private int iMySize public
LinkedList() myHead null myTail
null iMySize 0 LinkedList list new
LinkedList()
LinkedList
myHead iMySize myTail
null
0
null
8
Add Element - List Empty (Before)
myHead myTail iMySize
0
null
null
9
Add Element - List Empty (After)
myHead myTail iMySize
1


Object
10
Add Element - List Not Empty (Before)
myHead myTail iMySize
1


Node myData myNext
null

Object
11
Add Element - List Not Empty (After)
myHead myTail iMySize
2


Node myData myNext

null

Object
Object
12
Code for default add
  • public void add(Object item)

13
Code for arbitrary add
  • public void add(Object item, int pos)

14
Code for get
  • public Object get(int pos)

15
Code for remove
  • public Object remove(int pos)

16
Why Linked List
  • Are any operations with a Linked List faster than
    the version from ArrayList?
  • What about this
  • public void addFront(Object item)
  • Big O? Array version Big O?
  • Fast performance for removeFront as well?

17
Remove Back Method
  • public Object removeBack()
  • Big O?

18
Other Possible Features of Linked Lists
  • Doubly Linked
  • Circular
  • Dummy Nodes for first and last node in list

public class DLNode private Object
myData private DLNode myNext private DLNode
myPrevious
19
Default add for Doubly Linked List
  • public void add(Object item)

20
Code for arbitrary add - Doubly Linked List
  • public void remove(Object item, int pos)

21
Code for removeDoubly Linked List
  • public Object remove(int pos)
Write a Comment
User Comments (0)
About PowerShow.com