home *** CD-ROM | disk | FTP | other *** search
/ 300 Favorite Games / 300GAMES.iso / 132 / list.c < prev    next >
C/C++ Source or Header  |  1991-10-12  |  1KB  |  62 lines

  1. //
  2. // LIST - list processing functions for orbiter
  3. //
  4. // Version: 1.0  Copyright (C) 1990, Hutchins Software
  5. // Author: Edward Hutchins
  6. // Revisions:
  7. //
  8.  
  9. #include "orbiter.h"
  10.  
  11. //
  12. // AddHead - add an object to the head of a list
  13. //
  14.  
  15. VOID FAR PASCAL AddHead( NPLIST npList, NPNODE npNode )
  16. {
  17.     if (npList->npHead)
  18.     {
  19.         npNode->npNext = npList->npHead;
  20.         npNode->npPrev = NULL;
  21.         npList->npHead = (npList->npHead->npPrev = npNode);
  22.     }
  23.     else // add to an empty list
  24.     {
  25.         npList->npHead = npList->npTail = npNode;
  26.         npNode->npNext = npNode->npPrev = NULL;
  27.     }
  28. }
  29.  
  30. //
  31. // RemHead - remove the first element in a list
  32. //
  33.  
  34. NPNODE FAR PASCAL RemHead( NPLIST npList )
  35. {
  36.     if (npList->npHead)
  37.     {
  38.         NPNODE npNode = npList->npHead;
  39.         if (npList->npTail != npNode)
  40.         {
  41.             npList->npHead = npNode->npNext;
  42.             npNode->npNext->npPrev = NULL;
  43.         }
  44.         else npList->npHead = npList->npTail = NULL;
  45.         return( npNode );
  46.     }
  47.     else return( NULL );
  48. }
  49.  
  50. //
  51. // Remove - remove an arbitrary element from a list
  52. //
  53.  
  54. VOID FAR PASCAL Remove( NPLIST npList, NPNODE npNode )
  55. {
  56.     if (npNode->npPrev) npNode->npPrev->npNext = npNode->npNext;
  57.     else npList->npHead = npNode->npNext;
  58.     if (npNode->npNext) npNode->npNext->npPrev = npNode->npPrev;
  59.     else npList->npTail = npNode->npPrev;
  60. }
  61.  
  62.