NodoB *BinomialHeap::extractMin(BinomialHeap &b)
{

    NodoB *headNode = *b.heap.begin();
    NodoB *minTemp= findMin(*headNode);
    BinomialHeap *btempExtractMin = new BinomialHeap(this->funcionComparar,this->size);

    NodoB *nodoHead = myreverse(*minTemp);

    btempExtractMin->heap.push_front(nodoHead);

    if(minTemp->siblingIzq && minTemp->siblingDer){

        minTemp->siblingDer->siblingIzq = minTemp->siblingIzq;
        minTemp->siblingIzq->siblingDer = minTemp->siblingDer;

    }else
        if(!minTemp->siblingDer){ // si hermano derecho es nulo
            minTemp->siblingIzq->siblingDer = NULL;
        }else
            if(!minTemp->siblingIzq){
                minTemp->siblingDer->siblingIzq=NULL;
            }

    b.junction(b,*btempExtractMin);
    qDebug()<<"kike";

    return minTemp;

    //btemp->heap.begin() = minTemp->pChild.reverse();
    //*minTemp = NULL; //borrado
    //b=junction(b,btemp);
}
Beispiel #2
0
void myitob(int n, char s[], int b) {
    int t;
    int j = 0;
    int sign = 1;
    if (n < 0) {
        sign = -1;
        n = -n;
    }
    do {
        t = n % b;
        if (t <= 9) {
            s[j] = '0' + t;
            j++;
        } else {
            s[j] = 'A' + t - 10;
            j++;
        }
        n = n / b;
    } while (n > 0);
    if (sign < 0) {
        s[j] = '-';
        j++;
    }
    s[j] = '\0';
    myreverse(s, 0, j);
}
 void reverseWords(string &s) {
     int len(s.size()), i(0), j(0), k(0);
     while (j < len) {
         while (i < len && s[i] == ' ') ++i;
         j = i;
         while (j < len && s[j] != ' ') ++j;
         myreverse(s, k, i, j - 1);
         i = j;
     }
     s = s.substr(0, max(0, k - 1));
     reverse(s.begin(), s.end());
 }
int main()
{
	int len;
	char line[MAXLINE];
	char rline[MAXLINE];

	printf("> ");
	while ((len = mygetline(line, MAXLINE)) > 0)
	{
		myreverse(line, rline, len);
		printf("%s", rline);
		printf("> ");
	}

	return 0;
}
Beispiel #5
0
 void rotate(int nums[], int n, int k) {
     k %= n;
     myreverse(nums, 0, n - k - 1);
     myreverse(nums, n - k, n - 1);
     myreverse(nums, 0, n - 1);
 }