Listing 2

/*
 * ln_seq.cpp - line number sequence implementation
 */
#include <stdio.h>
#include "ln_seq.h"

ln_seq::ln_seq()
   {
   first = last = 0;
   }

ln_seq::ln_seq(unsigned n)
   {
   first = last = new listnode;
   first->number = n;
   first->next = 0;
   }

void ln_seq::add(unsigned n)
   {
   listnode *p;

   if (first == 0 || last->number != n)
      {
      p = new listnode;
      p->number = n;
      p->next = 0;
      if (first == 0)
         first = p;
      else
         last->next = p;
      last = p;
      }
   }

void ln_seq::print()
   {
   listnode *p;

   for (p = first; p != 0; p = p->next)
      printf("%4d", p->number);
   }