 
        
        
          Добавил:
          
          
        
        
    
            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
          
      
    
    
    
          