home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / CTECHAPP.ZIP / CONTAINR.ZIP / SINGLIST.CPP < prev    next >
C/C++ Source or Header  |  1990-01-27  |  2KB  |  100 lines

  1. //  Module:     SingList (Singly-Linked Lists)
  2. //  Version:    3.20
  3. //
  4. //  Language:   C++ 2.0
  5. //  Environ:    Any
  6. //
  7. //  Purpose:    Provides a general set of singly-linked list classes
  8. //
  9. //  Written by: Scott Robert Ladd
  10.  
  11. #include "SingList.hpp"
  12.  
  13. extern "C"
  14.     {
  15.     #include "stddef.h"
  16.     }
  17.  
  18. // duplication method
  19. void SinglyLinkedList::Copy(const SinglyLinkedList & sl)
  20.     {
  21.     Head = NULL;
  22.     Tail = NULL;
  23.  
  24.     ListNode * temp = sl.Head;
  25.  
  26.     while (temp != NULL)
  27.         {
  28.         if (Tail == NULL)
  29.             {
  30.             Tail = new ListNode;
  31.  
  32.             if (Tail == NULL)
  33.                 ErrorHandler();
  34.  
  35.             Head = Tail;
  36.  
  37.             Tail->Next    = NULL;
  38.             Tail->DataPtr = temp->DataPtr;
  39.             }
  40.         else
  41.             {
  42.             Tail->Next = new ListNode;
  43.  
  44.             if (Tail->Next == NULL)
  45.                 ErrorHandler();
  46.  
  47.             Tail->Next->Next    = NULL;
  48.             Tail->Next->DataPtr = temp->DataPtr;
  49.  
  50.             Tail = Tail->Next;
  51.             }
  52.  
  53.         temp = temp->Next;
  54.         }
  55.     }
  56.  
  57. // constructor
  58. SinglyLinkedList::SinglyLinkedList() : Container()
  59.     {
  60.     Head  = NULL;
  61.     Tail  = NULL;
  62.     }
  63.  
  64. // copy contructor
  65. SinglyLinkedList::SinglyLinkedList(const SinglyLinkedList & sl) : Container(sl)
  66.     {
  67.     Copy(sl);
  68.     }
  69.  
  70. // assignment operator
  71. void SinglyLinkedList::operator = (const SinglyLinkedList & sl)
  72.     {
  73.     this->Empty();
  74.  
  75.     Count = sl.Count;
  76.  
  77.     Copy(sl);
  78.     }
  79.  
  80. // destructor
  81. SinglyLinkedList::~SinglyLinkedList ()
  82.     {
  83.     this->Empty();
  84.     }
  85.  
  86. // remove all items from a list
  87. void SinglyLinkedList::Empty()
  88.     {
  89.     ListNode * temp, * hold;
  90.  
  91.     temp = Head;
  92.  
  93.     while (temp != NULL)
  94.         {
  95.         hold = temp->Next;
  96.         delete temp;
  97.         temp = hold;
  98.         }
  99.     }
  100.