home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / autopsp.zip / LOC / LLIST.H < prev    next >
C/C++ Source or Header  |  1995-07-01  |  3KB  |  82 lines

  1. // LList object
  2. // Class to implement linked lists where each node points to a data
  3. // object.  The programmer is responsible for knowing what kind of
  4. // data will reside at the end of the LL_Data pointer.
  5.  
  6. #include "stdio.h"
  7. #include "stdlib.h"
  8. #include "conio.h"
  9. #include "string.h"
  10.  
  11. #define DEBUG 1
  12.  
  13. #ifndef LLIST_DEF
  14. #define LLIST_DEF
  15.  
  16. class LLNode;
  17.  
  18. class LLNode{
  19.   public:
  20. //  LLNode *Next;   // Next node in list.
  21. //  LLNode *Prev;   // Previous node in list.
  22.   LLNode* Next;   // Next node in list.
  23.   LLNode* Prev;   // Previous node in list.
  24.   void* Data;   // Pointer to the data object.
  25. };
  26.  
  27. // These defines are used to determine if the added node will be before
  28. //   or after the current node.  Default is After.
  29. #define LL_ADD_AFTER  0
  30. #define LL_ADD_BEFORE 1
  31. #define LL_DATA 0
  32. #define LL_NEXT 1   // Used by both Remove and Retrieve
  33. #define LL_PREV 2
  34. #define LL_HEAD 3
  35. #define LL_NUM_NODES 4
  36.  
  37.  
  38. #ifndef NULL
  39. #define NULL 0
  40. #endif
  41.  
  42. #define TRUE  1
  43. #define FALSE 0
  44.  
  45. class LList{
  46.   public:
  47.   LList();        // Creates itself, at sets it LL_Head ptr to NULL.
  48.   ~LList();       // Runs backwards through the list deleting the
  49.                   //   nodes.  This will be long unless the programmer
  50.                   //   deletes it's own nodes.
  51.   private:
  52.   LLNode *LL_Head;   // Points to the head of the list.
  53.   LLNode *LL_Cur;    // Points to the current member of the list
  54.   LLNode *LL_temp;   // For holding temp values.
  55.  
  56.   public:
  57.   int  NumNodes;
  58.   int  AtEnd;
  59.   void Add(void *Data,
  60.          int BorF);  //Instructs the List to create a new node at the
  61.                      //   LL_Cur position and assign it the data at
  62.                      //   the pointer supplied.  (Which may be NULL)
  63.   void Remove(int GoWhere);   // The List will give the node pointed to by
  64.                      //   LL_Prev its value Next and be deallocated.
  65.   void Assign(void *Data);  // Make Cur->Data = the new Data value.
  66.   void *Retrieve(int GetWhat);     // Returns Cur->Data pointer for LL_CUR.
  67.                                    // Returns Cur->Next pointer for LL_NEXT.
  68.                                    // Returns Cur->Prev pointer for LL_PREV.
  69.                                    // Returns &NumNodes for LL_NUM_NODES.
  70.                                    //  (Just NumNodes would have been nicer, but didn't fit)
  71.   void Next(void);     // Cur = the Nodes value for Next
  72.   void Prev(void);     // Cur = the Nodes value for Prev
  73.   void Restart(void);  // Cur = Head
  74. };
  75.  
  76. #endif
  77.  
  78.  
  79.  
  80.  
  81.  
  82.