home *** CD-ROM | disk | FTP | other *** search
/ CD Actual 13 / CDA13.ISO / cdactual / demobin / share / program / C / ANSICPP.ZIP / EX07020.CPP < prev    next >
Encoding:
C/C++ Source or Header  |  1990-07-24  |  1.1 KB  |  52 lines

  1. // ex07020.cpp
  2. // this and the Linked List
  3. #include <iostream.h>
  4. #include <string.h>
  5.  
  6. class ListEntry {
  7.     char *listvalue;
  8.     ListEntry *preventry;
  9. public:
  10.     ListEntry(char *);
  11.     ~ListEntry() { delete listvalue; }
  12.     ListEntry *PrevEntry() { return preventry; };
  13.     void display() { cout << '\n' << listvalue; }
  14.     // ---------- use the 'this' pointer to chain the list
  15.     void AddEntry(ListEntry& le) { le.preventry = this; }
  16. };
  17.  
  18. ListEntry::ListEntry(char *s)
  19. {
  20.     listvalue = new char[strlen(s)+1];
  21.     strcpy(listvalue, s);
  22.     preventry = NULL;
  23. }
  24.  
  25.  
  26. main()
  27. {
  28.     ListEntry *prev = NULL;
  29.     // ---------- read in some names
  30.     while (1)    {
  31.         cout << "\nEnter a name: ";
  32.         char name[25];
  33.         cin >> name;
  34.         if (strncmp(name, "end", 3) == 0)
  35.             break;
  36.         // -------- make a list entry of the name
  37.         ListEntry *list = new ListEntry(name);
  38.         if (prev != NULL)
  39.             // -------- add the entry to the linked list
  40.             prev->AddEntry(*list);
  41.         prev = list;
  42.     }
  43.     // ------- display the names in reverse order
  44.     while (prev != NULL)    {
  45.         prev->display();
  46.         ListEntry *hold = prev;
  47.         prev = prev->PrevEntry();
  48.         // -------- delete the ListEntry
  49.         delete hold;
  50.     }
  51. }
  52.