A Recursive List Paradigm - PowerPoint PPT Presentation

1 / 20
About This Presentation
Title:

A Recursive List Paradigm

Description:

Array Analogy Paradigm. Positional Paradigm (One-way) Positional Paradigm (Two-way) ... Examples. OrderedList Class (composed with RecursiveList) ... – PowerPoint PPT presentation

Number of Views:26
Avg rating:3.0/5.0
Slides: 21
Provided by: jackbe7
Category:

less

Transcript and Presenter's Notes

Title: A Recursive List Paradigm


1
A Recursive List Paradigm
  • Jack Beidler
  • Yaodong Bi
  • Bob McCloskey
  • Computing Sciences
  • University of Scranton
  • Scranton, PA 18510

2
A Recursive List Paradigm
  • List Paradigms
  • A Recursive List Paradigm
  • Examples
  • Unfocused vs. focused paradigms
  • From the recursive paradigm to a positional
    paradigm

3
List Paradigms
  • Lists and the Java API
  • Interface List and its implementations
  • 25 methods
  • Swiss Army Knif Approach (multiple paradigms)
  • Focused Paradigms - a few well chosen coordinated
    methods
  • Array Analogy Paradigm
  • Positional Paradigm (One-way)
  • Positional Paradigm (Two-way)
  • Recursive Paradigm

4
A Recursive List Paradigm
  • McCarthys LISP
  • http//www-formal.stanford.edu/jmc/history/lisp/li
    sp.html
  • A no compromise recursive paradigm
  • A list
  • isEmpty
  • or (head, tail)
  • head is an object
  • tail is a (possibly empty) sublist
  • A Java Implementation
  • 3 constructors
  • 6 methods
  • 2 utility methods

5
A Recursive List Paradigm
  • Constructors
  • RecursiveList ()empty list
  • RecursiveList (Object Head)
  • non-empty list w empty tail
  • RecursiveList
  • (Object Head, RecursiveList Tail)list with tail

6
A Recursive List Paradigm
  • Methods
  • boolean isEmpty()
  • RecursiveList tailOf()
  • Object getHead()
  • void setHead(Object NewHead)
  • void insert(RecursiveList List)
  • RecursiveList remove()

7
A Recursive List Paradigm
  • Utility Methods
  • void swap(RecursiveList List)
  • String toString()

8
A Recursive List Paradigm
  • What about iterator support
  • Recursion is the traversal method

9
Examples
  • OrderedList Class (composed with RecursiveList)
  • import java.util.
  • class OrderedList
  • private Comparator c
  • protected RecursiveList L
  • OrderedList (Comparator c)
  • this.c c
  • L new RecursiveList()

10
Examples
  • OrderedList Class (composed with RecursiveList)
  • private void RecInsert
  • (Object Obj,
  • RecursiveList List)
  • if(List.isEmpty()
  • (c.compare(Obj, List.getHead())lt0))
  • List.insert(new RecursiveList(Obj))
  • else RecInsert(Obj, List.tailOf())
  • public void insert(Object Obj)
  • RecInsert(Obj, L)

11
Examples
  • OrderedList Class (composed with RecursiveList)
  • private void Recmerge (RecursiveList Source1,
    RecursiveList Source2, RecursiveList Merged)
  • if (Source1.isEmpty()) Merged.swap(Source2)
  • else if (Source2.isEmpty()) Merged.swap(Source1)
  • else
  • if (c.compare(Source1.getHead()
  • , Source2.getHead())lt0)
  • Merged.insert(Source1.remove())
  • else Merged.insert(Source2.remove())
  • Recmerge(Source1, Source2, Merged.tailOf())

12
Examples
  • OrderedList Class (composed with RecursiveList)
  • public void merge(OrderedList Source1,
  • OrderedList Source2)
  • Recmerge(Source1.L, Source2.L, this.L)
  • public String toString()
  • return L.toString()

13
Examples
  • OrderedList Class (composed with RecursiveList)
  • Simplicity of insert
  • Simplicity of merge
  • What about iterator support
  • One moment please

14
Unfocused vs. focused paradigms
  • GT
  • 1 Constructors
  • 13 Methods
  • 0 Utility Methods
  • RecursiveList
  • 3 Constructors
  • 6 Methods
  • 2 Utility methods

15
Unfocused vs. focused paradigms
  • S
  • 2 Constructors
  • 14 Methods
  • 0 Utility Methods
  • RecursiveList
  • 3 Constructors
  • 6 Methods
  • 2 Utility methods

16
Unfocused vs. focused paradigms
  • CP
  • 1 Constructors
  • 7 Methods
  • 0 Utility Methods
  • RecursiveList
  • 3 Constructors
  • 6 Methods
  • 2 Utility methods

17
From the recursive paradigm to a positional
paradigm
  • What about iteration?
  • What about the positional paradigm?
  • Constructed as an extension of the recursive
    paradigm.

18
From the recursive paradigm to a positional
paradigm
  • void front()
  • void rear()
  • void next()
  • void prev()
  • void append(Object O)
  • void setObject(Object O)
  • Object getObject()

boolean currDefined()
19
From the recursive paradigm to a positional
paradigm
  • RecursiveList Order new RecursiveList()
  • RecursiveListIterator It new
  • RecursiveListIterator(Or
    der)
  • for (It.front() It.currDefined() It.next())
  • System.out.print(((Integer)It.getObject())"\t
    ")
  • System.out.println()
  • for (It.rear() It.currDefined() It.prev())
  • System.out.print(((Integer)It.getObject())"\t
    ")
  • System.out.println()

20
Conclusions
  • Lean, mean, well focused is usually better that
    the Swiss Army Knife approach
  • http//www.cs.scranton.edu/beidler/java/OneWay/
  • It is even nicer with trees
  • RecBinTree Class
  • http//www.cs.scranton.edu/beidler/java/RecBinTre
    e/
Write a Comment
User Comments (0)
About PowerShow.com