Lists

10
Lists 1 © 2004 Goodrich, Tamassia Lists

description

Lists. The Position ADT models the notion of place within a data structure where a single object is stored It gives a unified view of diverse ways of storing data, such as a cell of an array a node of a linked list Just one method: - PowerPoint PPT Presentation

Transcript of Lists

Page 1: Lists

Lists 1© 2004 Goodrich, Tamassia

Lists

Page 2: Lists

Lists 2© 2004 Goodrich, Tamassia

Position ADTThe Position ADT models the notion of place within a data structure where a single object is storedIt gives a unified view of diverse ways of storing data, such as a cell of an array a node of a linked list

Just one method: object element(): returns the element

stored at the position

Page 3: Lists

Lists 3© 2004 Goodrich, Tamassia

List ADT

The List ADT models a sequence of positions storing arbitrary objectsIt establishes a before/after relation between positionsGeneric methods:

size(), isEmpty()

Accessor methods (all return type Position):

first(), last() prev(p), next(p)

Update methods: replace(p, e) remove(p) insertBefore(p, e) insertAfter(p, e) insertFirst(e) insertLast(e)

Page 4: Lists

Lists 4© 2004 Goodrich, Tamassia

Implementing Vector ADT with List ADT

Vector ADTs: size() and isEmpty() elemAtRank(integer r) object replaceAtRank(integer r,

object o) insertAtRank(integer r, object o) object removeAtRank(integer r)

List ADT: size(), isEmpty()

first(), last() prev(p), next(p)

replace(p, e) remove(p) insertBefore(p, e) insertAfter(p, e) insertFirst(e) insertLast(e)

Page 5: Lists

Lists 5© 2004 Goodrich, Tamassia

Doubly Linked ListA doubly linked list provides a natural implementation of the List ADTNodes implement Position and store:

element link to the previous node link to the next node

Special trailer and header nodes

prev next

elem

trailerheader nodes/positions

elements

node

Page 6: Lists

Lists 6© 2004 Goodrich, Tamassia

InsertionWe visualize operation insertAfter(p, X), which returns position q

A B X C

A B C

p

A B C

p

X

q

p q

Page 7: Lists

Lists 7© 2004 Goodrich, Tamassia

Insertion AlgorithmAlgorithm insertAfter(p,e):

Create a new node vv.setElement(e)v.setPrev(p) {link v to its predecessor}v.setNext(p.getNext()) {link v to its successor}(p.getNext()).setPrev(v){link p’s old successor to v}p.setNext(v) {link p to its new successor, v}return v {the position for the element e}

Page 8: Lists

Lists 8© 2004 Goodrich, Tamassia

DeletionWe visualize remove(p), where p = last()

A B C D

p

A B C

D

p

A B C

Page 9: Lists

Lists 9© 2004 Goodrich, Tamassia

Deletion Algorithm

Algorithm remove(p):t = p.element {a temporary variable to hold the return value}(p.getPrev()).setNext(p.getNext()) {linking out p}(p.getNext()).setPrev(p.getPrev())p.setPrev(null) {invalidating the position p}p.setNext(null)return t

Page 10: Lists

Lists 10© 2004 Goodrich, Tamassia

PerformanceIn the implementation of the List ADT by means of a doubly linked list The space used by a list with n

elements is O(n) The space used by each position of the

list is O(1) All the operations of the List ADT run in O(1) time

Operation element() of the Position ADT runs in O(1) time