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); }
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; }
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); }