예제 #1
0
int main() {
    Deque<int> *Pippo = new Deque<int>();
    Pippo->addFirst(2)->addLast(7)->addFirst(0)->addLast(9)->addFirst(13);
    cout << "Elementi nel Deque: " << endl;
    Pippo->print();
    cout << "Numero elementi: " << Pippo->getSize() << endl;
    Pippo->delFirst()->delLast();
    cout << "Numero elementi: " << Pippo->getSize() << endl;
    Pippo->print();
    delete Pippo;
}
예제 #2
0
static void buildMaze(int y, int x)
{
    int numOffsets, offset, offsets[4];


    while (1) {
	numOffsets = 0;
	maze[y][x].visited = true;

	if (y > 0 && !maze[y - 1][x].visited)
	    offsets[numOffsets ++] = -width;

	if (y < height - 1 && !maze[y + 1][x].visited)
	    offsets[numOffsets ++] = width;

	if (x > 0 && !maze[y][x - 1].visited)
	    offsets[numOffsets ++] = -1;

	if (x < width - 1 && !maze[y][x + 1].visited)
	    offsets[numOffsets ++] = 1;

	if (numOffsets > 0) {
	    offset = offsets[rand() % numOffsets];
	    dp.addFirst(offset(x, y));

	    if (offset == -width) {
		maze[y - 1][x].bottom = false;
		buildMaze(y - 1, x);
	    } else if (offset == width) {
		maze[y][x].bottom = false;
		buildMaze(y + 1, x);
	    } else if (offset == -1) {
		maze[y][x - 1].right = false;
		buildMaze(y, x - 1);
	    } else if (offset == 1) {
		maze[y][x].right = false;
		buildMaze(y, x + 1);
	    } else
		abort();

	} else if (dp.size() > 0) {
	    offset = dp.removeFirst();
	    x = xcoord(offset);
	    y = ycoord(offset);

	} else
	    break;
    }

    maze[height - 1][width - 1].right = false;
}
예제 #3
0
파일: KdTree.cpp 프로젝트: caomw/KdTree-1
void KdTree::range(Node* x, Deque<Point2D>& deque, const RectHV& rect, bool HNode) {
	if (x == NULL) return;

	if (rect.contains(x->p_)) deque.addFirst(x->p_);

	if (!HNode) {
		if (rect.xmax() >= x->p_.x()) range(x->rt, deque, rect, !HNode);
		if (rect.xmin() <= x->p_.x()) range(x->lb, deque, rect, !HNode);
	}
	else {
		if (rect.ymax() >= x->p_.y()) range(x->rt, deque, rect, !HNode);
		if (rect.ymin() <= x->p_.y()) range(x->lb, deque, rect, !HNode);
	}
}