Exemplo n.º 1
0
HEAPDATA deleteHeap(HEAP *H){
	HEAPDATA item, tmp;
	int root, child, rchild;
	
	if (H->size == 0)
		terminateProgram("Cannot delete from an empty heap");
	
	item = H->data[0];
	H->size -= 1;
	H->data[0] = H->data[H->size];
	
	root = 0;
	child = 2 * root + 1;
	while (child < H->size){
		rchild = child + 1;
		if (rchild < H->size){
			if ((H->typ == MAXHEAP) && (H->data[rchild].key > H->data[child].key))
				child = rchild;
			if ((H->typ == MINHEAP) && (H->data[rchild].key < H->data[child].key))
				child = rchild;		
		}
		if ((H->typ == MAXHEAP) && (H->data[root].key > H->data[child].key))
			break;
		if ((H->typ == MINHEAP) && (H->data[root].key < H->data[child].key))
			break;
		
		tmp = H->data[root];
		H->data[root] = H->data[child];
		H->data[child] = tmp;
		root = child;
		child = 2 * root + 1;
	}
	return item;
}
Exemplo n.º 2
0
void insertHeap(HEAP *H, double key, int cx, int cy, int label){
	int place, parent;
	HEAPDATA tmp;
	
	if (H->size >= H->maxSize)
		terminateProgram("Cannot insert to a full heap");
	
	H->data[H->size].key = key;
	H->data[H->size].cx = cx;
	H->data[H->size].cy = cy;
	H->data[H->size].label = label;

	place = H->size;
	parent = (place - 1) / 2;
	
	while (place > 0){
		if ((H->typ == MAXHEAP) && (H->data[place].key < H->data[parent].key))
			break;
		if ((H->typ == MINHEAP) && (H->data[place].key > H->data[parent].key))
			break;

		tmp = H->data[place];
		H->data[place] = H->data[parent];
		H->data[parent] = tmp;
		
		place = parent;
		parent = (place - 1) / 2;
	}
	H->size += 1;
}
Exemplo n.º 3
0
int minMatrixColumn(MATRIX M, int columnNo){
	int minCol, i;

	if (columnNo >= M.column)
		terminateProgram("Error in maxMatrixColumn (matrix.c)");
	
	minCol = M.data[0][columnNo];
	for (i = 0; i < M.row; i++)
		if (M.data[i][columnNo] < minCol)
			minCol = M.data[i][columnNo];

	return minCol;
}
Exemplo n.º 4
0
void handleInterrupt21(int ax, int bx, int cx, int dx)
{
	if(ax == 0)
		printString(bx);
	else if(ax == 1)
		readString(bx);
	else if(ax == 2)
		readSector(bx, cx);
	else if(ax == 3)
		readFile(bx,cx);
	else if(ax == 4)
		executeProgram(bx, cx);
	else if(ax == 5)
 		terminateProgram();
 	else if (ax == 6)
		writeSector(bx,cx);
	else if (ax == 7)
		deleteFile(bx);
	else if(ax  == 8)
 		writeFile(bx,cx,dx);
	else
		printString("error\0");
}
Exemplo n.º 5
0
int main(int argc, char** argv)
{
//    main2(argc, argv);
    
    int info_fd;
    int log_fd;
    
    unsigned int speep_time_microseconds = 500*1000;
    
    options* opt = initProgram(argc, argv);
    prepareFiles(info_fd, log_fd, opt);
    
    int i = 1;
    while (do_work) // until sigint won't interrupt
    {
        work(info_fd, log_fd);
        usleep(speep_time_microseconds);
        printf("Appended %d entries\n", i++);
    }
    
    terminateProgram(info_fd, log_fd, opt);
    return 0;
}