LinkedLists

Usage

use LinkedLists;

or

import LinkedLists;

This module provides a simple singly linked list.

Note

This module is expected to change in the future.

record LinkedList

A singly linked list.

Note

destroy must be called to reclaim any memory used by the list.

type eltType

The type of the data stored in every node.

var size: int

The number of nodes in the list.

iter these()

Iterate over the list, yielding each element.

Yield type

eltType

proc append(e: eltType)

Append e to the list.

proc push_back(e: eltType)

Synonym for append.

proc append(e: eltType, es: eltType ...?k)

Append all of the supplied arguments to the list.

proc prepend(e: eltType)

Prepend e to the list.

proc push_front(e: eltType)

Synonym for prepend.

proc concat(l: LinkedList(eltType))

Append all the elements in l to the end of the list.

proc remove(x: eltType)

Remove the first encountered instance of x from the list. Does nothing if x is not present in the list.

proc pop_front(): eltType

Remove the first element from the list and return it. It is an error to call this function on an empty list.

proc contains(const e: eltType): bool

Returns true if this list contains an element equal to the value of e. Returns false otherwise.

Arguments

e – The element search for

Returns

true if the e was found

Return type

bool

proc ref first() ref: eltType

Returns a reference to the first item in the list

Warning

Calling this method on an empty list will cause the currently running program to halt. If the –fast flag is used, no safety checks will be performed

Returns

a reference to the first item in the list

Return type

ref eltType

proc ref last() ref: eltType

Returns a reference to the last item in the list

Warning

Calling this method on an empty list will cause the currently running program to halt. If the –fast flag is used, no safety checks will be performed

Returns

a reference to the last item in the list

Return type

ref eltType

proc destroy()

Delete every node in the list.

proc makeList(x ...?k)

Initialize a new LinkedList containing all of the supplied arguments.

Arguments

x : T – Every argument must be of type T.

Return type

LinkedList(T)