Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Курсовая работа. Вариант 16 / kurs / LIST
.H#ifndef __LIST_H
#define __LIST_H
#include <assert.h>
template< class NODETYPE>
class List {
public:
List();
~List();
void add(const NODETYPE&);
NODETYPE& operator[](int);
unsigned int get_qntf() const;
private:
struct node {
NODETYPE elem;
node* nextPtr;
};
node* beginPtr;
node* lastPtr;
unsigned int qntf_elem;
};
template< class NODETYPE>
unsigned int List<NODETYPE>::get_qntf() const
{
return qntf_elem;
}
template< class NODETYPE>
NODETYPE& List<NODETYPE>::operator[](int n)
{
assert(n < qntf_elem);
node* tempPtr = beginPtr;
if (!n) return beginPtr->elem;
for (int i = 0; i < n; i++)
tempPtr = tempPtr->nextPtr;
return tempPtr->elem;
}
template< class NODETYPE>
List<NODETYPE>::List()
{
beginPtr = NULL;
lastPtr = NULL;
qntf_elem = 0;
}
template< class NODETYPE>
List<NODETYPE>::~List()
{
while (beginPtr != NULL) {
node* tempPtr = beginPtr;
beginPtr = beginPtr->nextPtr;
delete tempPtr;
}
}
template< class NODETYPE>
void List<NODETYPE>::add(const NODETYPE& data)
{
node* newPtr = new node;
assert(newPtr != NULL);
newPtr->elem = data;
newPtr->nextPtr = NULL;
if (beginPtr)
lastPtr->nextPtr = newPtr;
else
beginPtr = lastPtr = newPtr;
lastPtr = newPtr;
qntf_elem++;
}
#endif
Соседние файлы в папке kurs