Return true if the bidirectional list starting from the specified head, and ending with the specified tail is well formed. A bidirectional list is well formed if tail == head (0 values are allowed) or all of the following conditions are met (note that head is renamed to h and tail to t for brevity):

Synopsis

Declared in <bslalg_bidirectionallinklistutil.h>

static
bool
isWellFormed(
    BidirectionalLink* head,
    BidirectionalLink* tail);

Description

1. h and t are valid addresses. 2. h‐>nextLink()‐>previousLink() == h is true. 3. !h‐>previousLink() || h‐>previousLink()‐>nextLink() == h is true. 4. t‐>previousLink()‐>nextLink() == t is true. 5. !t‐>nextLink() || t‐>nextLink()‐>previousLink() == t is true. 6. For each link in the list different than h and t both link‐>nextLink()‐>previousLink() == link and link‐>previousLink()‐>nextLink() == link are true.

The behavior is undefined unless tail can be reached from head following the chain of nextLink attributes of all the nodes in the open range [head, tail)].

Created with MrDocs