#include <iostream>
#include "list2.h"

using namespace std;

// statikus membert deklarálni kell!!
int list::nid = 0;

list::list() : id(nid), prev(0), next(0)
{
    ++nid;
}

list::~list()
{
    remove();
}

list *list::remove()
{
    if ( prev ) prev->next = next;
    if ( next ) next->prev = prev;
    next = prev = 0;
    return this;
}

void list::append( list *lp)
{
    next = lp->next;
    lp->next = this;
    prev = lp;
    if ( next ) next->prev = this;
}

void list::insert( list *lp)
{
    prev = lp->prev;
    lp->prev = this;
    next = lp;
    if ( prev ) prev->next = this;
}

void list::print( ostream& os) const
{
    os << "[ id = " << id << " ]";
}

ostream& operator<<( ostream& os, const list &l)
{
    l.print(os);
    return os;
}