The IntList
class describes immutable linked lists of
integers. An integer list is defined recursively as either
- the empty list, or
- a (non-empty) list node with a head component that is an integer and a tail component that is another integer list.
Integer lists are immutable in the
sense that the head or tail of a list node cannot be changed after
the list node has been created (via the prepend()
method).
There are no public constructor or instance methods for integer lists; they are created and manipulated by the following class methods:
Class Methods
public static IntList empty()
Returns an empty integer list.
IntList.empty()
behaves like new IntList()
.
public static IntList prepend (int n, IntList L)
Returns a new integer list node whose head is n
and
whose tail is L
.
IntList.prepend(n,L)
is equivalent to new IntList(n, L)
.
public static boolean isEmpty (IntList L)
Returns true
if L
is an empty integer list node
and false
if L
is a nonempty integer list node.
public static int head (IntList L)
Returns the integer that is the head component of the integer list node
L
. Signals an exception if L
is empty.
public static IntList tail (IntList L)
Returns the integer list that is the tail component of the integer list
node L
. Signals an exception if L
is empty.
public static boolean equals (IntList L1, IntList L2)
Returns true
if L1
and L2
have the same length and the same elements
in the same order; otherwise returns false
. Note that the equals
method behaves differently than ==
on lists, which determines if
two list nodes were created by the same call to prepend
. For instance,
if L
is the list [1,2,3]
, then
L.equals(prepend(1,tail(L)))
is true
,
but L == prepend(1,tail(L))
is false
.
public static String toString (IntList L)
Returns a string representation of of the integer list L
in which the integer list elements are separated by commas
and delimited by square brackets.
For example, if L1
is a list containing the sequence of
integers 6, -17 and 42, then toString(L1)
returns "[6,-17,42]"
.
public static IntList fromString (String s)
If s
is the printed representation of an integer list
(i.e., comma separated integers delimited by square brackets),
returns an IntList
with that representation.
For example, fromString("[7,-2,4]")
returns
an 3-element integer list with elements 7
,
-2
, and 4
.
If s
is not the printed representation of an integer list,
signals an error.