C++ template linked list (2)

Description

C++ template linked list (2)

#include <iostream>
using namespace std;
template<class TYPE>                  //struct link<TYPE>
struct link                           //one element of list
//( within this struct def link means link<TYPE> )
{
   TYPE data;                         //data item
   link* next;                        //pointer to next link
};
template<class TYPE>                  //class linklist<TYPE>
class linklist                        //a list of links
{
   private:/*ww w . j av a  2 s  . co m*/
   link<TYPE>* first;              //pointer to first link
   public:
   linklist()                      //no-argument constructor
   { first = NULL; }            //no first link
   //note: destructor would be nice; not shown for simplicity
   void additem(TYPE d);           //add data item (one link)
   void display();                 //display all links
};
template<class TYPE>
void linklist<TYPE>::additem(TYPE d)  //add data item
{
   link<TYPE>* newlink = new link<TYPE>;  //make a new link
   newlink->data = d;                 //give it data
   newlink->next = first;             //it points to next link
   first = newlink;                   //now first points to this
}
template<class TYPE>
void linklist<TYPE>::display()
{
   link<TYPE>* current = first;       //set ptr to first link
   while( current != NULL )           //quit on last link
   {
      cout << endl << current->data;  //print data
      current = current->next;        //move to next link
   }
}
int main()
{
   linklist<double> ld; //ld is object of class linklist<double>
   ld.additem(1.5);   //add three doubles to list ld
   ld.additem(2.6);
   ld.additem(3.7);
   ld.display();        //display entire list ld
   linklist<char> lch;  //lch is object of class linklist<char>
   lch.additem('a');    //add three chars to list lch
   lch.additem('b');
   lch.additem('c');
   lch.display();       //display entire list lch
   cout << endl;
   return 0;
}



PreviousNext

Related