Index of Functions: A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X 
Index Page
lnkhl

Table of contents
Procedure
Abstract
Required_Reading
Keywords
Declarations
Brief_I/O
Detailed_Input
Detailed_Output
Parameters
Exceptions
Files
Particulars
Examples
Restrictions
Literature_References
Author_and_Institution
Version

Procedure

     LNKHL ( LNK, head of list )

     INTEGER FUNCTION LNKHL ( NODE, POOL )

Abstract

     Return the head node of the list containing a specified node.

Required_Reading

     None.

Keywords

     LIST

Declarations

     IMPLICIT NONE

     INTEGER               LBPOOL
     PARAMETER           ( LBPOOL = -5 )

     INTEGER               NODE
     INTEGER               POOL ( 2,  LBPOOL : * )

Brief_I/O

     VARIABLE  I/O  DESCRIPTION
     --------  ---  --------------------------------------------------
     NODE       I   Number of a node.
     POOL       I   A doubly linked list pool.
     LBPOOL     P   Lower bound of pool column indices.

     The function returns the number of the head node of the list
     containing NODE.

Detailed_Input

     NODE     is the number of a node in POOL. Normally,
              NODE will designate an allocated node, but NODE
              is permitted to be less than or equal to zero.

     POOL     is a doubly linked list pool.

Detailed_Output

     The function returns the number of the head node of the list
     containing NODE. If NODE is non-positive, the function returns
     zero.

Parameters

     LBPOOL   is the lower bound of the column indices of the POOL
              array. The columns indexed LBPOOL to 0 are reserved
              as a control area for the pool.

Exceptions

     1)  If the NODE is less than or equal to zero, NODE is not
         considered to be erroneous. The value 0 is returned.

     2)  If NODE is greater than the size of the pool, the error
         SPICE(INVALIDNODE) is signaled. The value 0 is returned.

     3)  If NODE is not the number of an allocated node, the error
         SPICE(UNALLOCATEDNODE) is signaled. The value 0 is returned.

Files

     None.

Particulars

     This routine provides a convenient way to find the head of a list
     in a doubly linked list pool. The need to find the head of a
     list arises in applications such as buffer management. For
     example, in a system using a "least recently used" buffer
     replacement policy, the head of a list may point to the most
     recently accessed buffer element.

Examples

     1)  If POOL is a doubly linked list pool that contains the list

            3 <--> 7 <--> 1 <--> 44

         any of function references

            HEAD = LNKHL ( 3,  POOL )
            HEAD = LNKHL ( 7,  POOL )
            HEAD = LNKHL ( 44, POOL )

         will assign the value 3 to HEAD.


     2)  If POOL is a doubly linked list pool that contains the
         singleton list consisting of the allocated node

            44

         the function reference

            HEAD = LNKHL ( 44, POOL )

         will assign the value 44 to HEAD.

Restrictions

     1)  Linked list pools must be initialized via the routine
         LNKINI. Failure to initialize a linked list pool
         will almost certainly lead to confusing results.

Literature_References

     None.

Author_and_Institution

     N.J. Bachman       (JPL)
     J. Diaz del Rio    (ODC Space)
     W.L. Taber         (JPL)

Version

    SPICELIB Version 1.0.1, 24-NOV-2021 (JDR)

        Edited the header to comply with NAIF standard.

    SPICELIB Version 1.0.0, 19-DEC-1995 (NJB) (WLT)
Fri Dec 31 18:36:31 2021