Скачиваний:
17
Добавлен:
01.05.2014
Размер:
1.96 Кб
Скачать
#ifndef IIIlistcppIII
#define IIIlistcppIII
#include "l1c4list.h"


template <class Typer>
List<Typer>::List()
{
 First = NULL;
}


template <class Typer>
void List<Typer>::tobegin()
{
 current=First;
};

template <class Typer>
void List<Typer>::move()
{
 current=(*current).GetNext();
};

template <class Typer>
void List<Typer>::add(Typer F)
{
 ListEl<Typer>* pNewEl;
 pNewEl = new ListEl<Typer>;
 (*pNewEl).SetFig(F);
 if (Empty())
  {
   First = pNewEl;
   (*First).SetNext(First);
  }
 else
  {
   ListEl<Typer>* P=First;
   ListEl<Typer>* XY=(*First).GetNext();
   tobegin();
    while ((*P).GetNext() != First)
    P = (*P).GetNext();
   (*P).SetNext(pNewEl);
   (*pNewEl).SetNext(First);
   First = pNewEl;
  };
 tobegin();
};

template <class Typer>
void List<Typer>::del()
{

 if (!Empty())
  {
   if (First == (*First).GetNext())
    {
     delete First;
     First = NULL;
    }
   else
    {
     ListEl<Typer> *P=First;
     while ((*P).GetNext() != current)
      P = (*P).GetNext();
     if (current == First)
      First = P;
     (*P).SetNext((*((*P).GetNext())).GetNext());
     delete current;
    };
   tobegin();

  }
};

template <class Typer>
void List<Typer>::out()
{
 if (Empty())
   cout<<"empty list";
 else
  {
   ListEl<Typer> *P=First;
   Typer F;
   do
    {
     (*P).GetFig(F);
     F.Out();
     P = (*P).GetNext();
    }
   while (P != First);
  };

};

template <class Typer>
void List<Typer>::GetCur(Typer &F)
{
 (*current).GetFig(F);
 del();
};

template <class Typer>
void List<Typer>::GetInf(Typer &F)
{
 (*current).GetFig(F);
}

template <class Typer>
int List<Typer>::Empty()
{
return (First == NULL);
}

template <class Typer>
void List<Typer>::SetInf(const Typer F)
{
 (*current).SetFig(F);
}

template <class Typer>
List<Typer>::~List()
 {
 delete First;
 delete current;
 }

#endif
Соседние файлы в папке Лабораторная работа 2