Скачиваний:
13
Добавлен:
01.05.2014
Размер:
1.33 Кб
Скачать
#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
  • #
    01.05.2014180 б13INP.TXT
  • #
    01.05.20149.39 Кб12LEXANLS.BAK
  • #
    01.05.20149.39 Кб11LEXANLS.CPP
  • #
    01.05.201419.58 Кб11LEXANLS.OBJ
  • #
    01.05.20141.05 Кб11LINK.TXT
  • #
    01.05.20141.33 Кб13LIST.H
  • #
    01.05.201420.92 Кб12MACRO.INC
  • #
    01.05.201474 б11MAKE.BAT
  • #
    01.05.20141.15 Кб12OUT.ASM
  • #
    01.05.20145 б11OUT.DAT
  • #
    01.05.2014401 б11OUT.MAP