1 /* ========================================================================== **
4 * Copyright (C) 1997 by Christopher R. Hertel
6 * Email: crh@ubiqx.mn.org
7 * -------------------------------------------------------------------------- **
8 * This module implements a really simple singly-linked list.
9 * -------------------------------------------------------------------------- **
11 * This library is free software; you can redistribute it and/or
12 * modify it under the terms of the GNU Library General Public
13 * License as published by the Free Software Foundation; either
14 * version 2 of the License, or (at your option) any later version.
16 * This library is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19 * Library General Public License for more details.
21 * You should have received a copy of the GNU Library General Public
22 * License along with this library; if not, write to the Free
23 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
25 * -------------------------------------------------------------------------- **
27 * Revision 0.2 1997/10/21 03:35:18 crh
28 * Added parameter <After> in function Insert(). Made necessary changes
29 * to macro AddHead() and added macro AddHere().
31 * Revision 0.1 1997/10/16 02:53:45 crh
34 * ========================================================================== **
37 #include "ubi_sLinkList.h"
39 /* ========================================================================== **
43 ubi_slListPtr
ubi_slInitList( ubi_slListPtr ListPtr
)
44 /* ------------------------------------------------------------------------ **
45 * Initialize a singly-linked list header.
47 * Input: ListPtr - A pointer to the list structure that is to be
48 * initialized for use.
50 * Output: A pointer to the initialized list header (i.e., same as
53 * ------------------------------------------------------------------------ **
59 } /* ubi_slInitList */
61 ubi_slNodePtr
ubi_slInsert( ubi_slListPtr ListPtr
,
64 /* ------------------------------------------------------------------------ **
65 * Insert a new node at the head of the list.
67 * Input: ListPtr - A pointer to the list into which the node is to
69 * New - Pointer to the node that is to be added to the list.
70 * After - Pointer to a list in a node after which the new node
71 * will be inserted. If NULL, then the new node will
72 * be added at the head of the list.
74 * Output: A pointer to the node that was inserted into the list (i.e.,
77 * ------------------------------------------------------------------------ **
80 ubi_slNodePtr
*PredPtr
;
82 PredPtr
= ( NULL
== After
) ? &(ListPtr
->Head
) : &(After
->Next
);
89 ubi_slNodePtr
ubi_slRemove( ubi_slListPtr ListPtr
)
90 /* ------------------------------------------------------------------------ **
91 * Remove a node from the head of the list.
93 * Input: ListPtr - A pointer to the list from which the node is to be
96 * Output: A pointer to the node that was removed.
98 * ------------------------------------------------------------------------ **
101 ubi_slNodePtr Old
= ListPtr
->Head
;
105 ListPtr
->Head
= Old
->Next
;
112 /* ================================ The End ================================= */