//
// lns2a.cpp - line number sequence implementation
//
#include <stdio.h>
#include "lns.h"
class lns::details
{
public:
details(unsigned n);
~details();
void add(unsigned n);
void print();
private:
class node;
node *first;
};
class lns::details::node
{
public:
node(unsigned n);
unsigned number;
node *next;
};
inline lns::details::node::node(unsigned n)
: number(n), next(0)
{
}
inline lns::details::details(unsigned n)
{
first = new node(n);
}
lns::details::~details()
{
node *p;
while ((p = first) != 0)
{
first = first->next;
delete p;
}
}
void lns::details::add(unsigned n)
{
node *p = first;
while (p->next != 0 && p->number != n)
p = p->next;
if (p->number != n)
p = p->next = new node(n);
}
void lns::details::print()
{
node *p;
for (p = first; p != 0; p = p->next)
printf("%4d ", p->number);
}
lns::lns(unsigned n)
{
dp = new details(n);
}
lns::~lns()
{
delete dp;
}
void lns::add(unsigned n)
{
dp->add(n);
}
void lns::print()
{
dp->print();
}
// End of File