矩形链的加、减、相交等运算算法?
问题:有n个不相交的矩形组成的链表,要实现加、减、相交等算法。
定义:
typedef Rect RECT;
struct LRect
{
LRect* pNext;
Rect R;
};
struct Cover
{
LRect* pFrst;
//赋值
int operator = (const Cover& cv);
int operator = (const Rect& rc);
//加一个矩形到链表中,如果和原链表中的某个相交,合并或者分裂成新的互不相交的矩形链表;
int operator += (const Rect& rc);
//从链表中减去一个矩形,
int operator -= (const Rect& rc);
//求相交的链表
int operator *= (const Rect& rc);
//除去公共部分的链表
int operator ^= (const Rect& rc);
int operator += (const Cover& cv);
int operator -= (const Cover& cv);
int operator *= (const Cover& cv);
int operator ^= (const Cover& cv);
};
定义这2个结构和运算重载来实现最后的相等性判断:
int operator == (const Cover& gcv1, const Cover& gcv2);
int operator != (const Cover& gcv1, const Cover& gcv2);
我不知道时候有比较好的解法,谢过先。