Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Региональный поиск метод квадрантного дерева / src / CommonStructures
.h#ifndef CMNSTR
#define CMNSTR
#define POINTTYPE int
#define ELEMENT Point
///////////////////////////////////////////////////////////
//Класс, определяющий точку на плоскости
///////////////////////////////////////////////////////////
class Point {
public:
POINTTYPE x; //координаты точки
POINTTYPE y;
//конструктор
Point(POINTTYPE _x=0.0,POINTTYPE _y=0.0);
//операторы класса
POINTTYPE operator[] (int);
int operator== (Point&);
int operator!= (Point&);
int operator< (Point&);
int operator> (Point&);
Point operator+(Point&);
};
///////////////////////////////////////////////////////////
//Класс, определяющий прямоугольник на плоскости
///////////////////////////////////////////////////////////
class Rect {
public:
Point sw; //точка нижнего левого угла прямоугольника
Point ne; //точка верхнего правого угла прямоугольника
//конструктор
Rect(Point &sw,Point &ne);
//операторы преобразования
operator CRect();
};
///////////////////////////////////////////////////////////
//Класс, определяющий узел элемента списка List
///////////////////////////////////////////////////////////
class List;
class ListNode {
private:
ListNode *m_next; //указатель на следующий элемент
ListNode *m_prev; //указатель на предшествующий элемент
ELEMENT m_val; //содержит значение данного элемента списка
public:
ListNode *Next(void); //переход на следующий элемент
ListNode *Prev(void); //переход на предшествующий элемент
ListNode *Insert(ListNode*); //вставка нового элемента
ListNode *Remove(void); //удаление элемента
//конструктор
ListNode(ELEMENT &var=ELEMENT());
ListNode(ListNode &rhs) { VERIFY(0); }
//деструктор
virtual ~ListNode();
friend class List;
};
///////////////////////////////////////////////////////////
//Класс, определяющий двунаправленный связаный список
///////////////////////////////////////////////////////////
class List {
private:
ListNode *m_header; //указатель на головной элемент списка
ListNode *m_current;//указатель на текущий элемент списка
int m_lenght; //указывает текущее количество элементов списка
public:
//конструктор
List(void);
//конструктор копий
List(List&);
//оператор присваивания
List& operator =(List&);
//деструктор
~List(void);
//оператор обращения к точке по индексу
ELEMENT operator[](int i);
//операции над элементами списка:
void Insert (ELEMENT&); //вставка нового элемента
void Append (ELEMENT&); //добавление нового элемента в конец списка
void Prepend(ELEMENT&); //добавление нового элемента в начало списка
void Remove(void); //удаление текущего элемента
void Val(ELEMENT& val); //инициализация текущего элемента списка
ELEMENT *Val (void); //получение значения текущего элемента списка
ELEMENT *Next(void); //переход на следующий элемент списка
ELEMENT *Prev(void); //переход на предшествующий элемент списка
ELEMENT *First(void); //переход на первый элемент списка
ELEMENT *Last (void); //переход на последний элемент списка
int Lenght (void); //получение количества элементов в списке
int isFirst(void); //проверка: является ли текущий элемент списка первым
int isLast (void); //проверка: является ли текущий элемент списка последним
int isHead (void); //проверка: является ли текущий элемент списка головным
ListNode *GetCurrentNode();
};
#endif
Соседние файлы в папке src